UNPKG

@ngx-kit/core

Version:

ngx-kit - core module

147 lines 10.6 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable, Optional } from '@angular/core'; import { NavigationEnd, NavigationStart, Router } from '@angular/router'; import { KitLoadingProgress } from './kit-loading-progress'; import { kitLoadingGlobal } from './meta'; import * as i0 from "@angular/core"; import * as i1 from "@angular/router"; /** * Service for providing loading state. * * * ### Usage * * #### Global progress * * Provide `KitLoadingService`, get `global` progress and subscribe on state changes: * * ```typescript * constructor(private loading: KitLoadingService) { * } * * ngOnInit() { * this.loading.global.stateChanges * .subscribe(s => { * this.loadingState = s; * }); * } * ``` * * There are two states: `KitLoadingState.InProgress` and `KitLoadingState.None`. * * State changes on `NavigationStart` and `NavigationEnd` event by default. * * Also you can run progress manually. For example, show loading progress while data is fetching: * * ```typescript * this.loading.global.start('data'); * this.dataService.get().subscribe(() => { * ... * this.loading.global.end('data'); * }); * ``` * * State switched to `None` only after all started events was ended. * * #### Custom progress * * Get a progress by `.progress(key: string)` method, if progress is not presented it will be automatically created. * * Custom progresses do not watch on router events, only on manual `start`/`end` calls. * * ```typescript * this.loading.progress('data-loading').start('data'); * this.dataService.get().subscribe(() => { * ... * this.loading.progress('data-loading').end('data'); * }); * ``` * * * ### Example * * * collection:loading-bar - * [sources](https://github.com/ngx-kit/ngx-kit/tree/master/packages/collection/lib/ui-loading-bar), * [demo](https://ngx-kit.com/collection/module/ui-loading-bar) */ var KitLoadingService = /** @class */ (function () { function KitLoadingService(router) { this.router = router; this.progresses = new Map(); // create global progress /** @type {?} */ var globalProgress = this.progress(kitLoadingGlobal); // subscribe globalProgress to router events if (this.router) { this.router.events.subscribe((/** * @param {?} event * @return {?} */ function (event) { if (event instanceof NavigationStart) { globalProgress.start('routing'); } if (event instanceof NavigationEnd) { globalProgress.end('routing'); } })); } } Object.defineProperty(KitLoadingService.prototype, "global", { get: /** * @return {?} */ function () { return this.progress(kitLoadingGlobal); }, enumerable: true, configurable: true }); /** * @param {?} id * @return {?} */ KitLoadingService.prototype.progress = /** * @param {?} id * @return {?} */ function (id) { if (this.progresses.has(id)) { return (/** @type {?} */ (this.progresses.get(id))); } else { /** @type {?} */ var progress = new KitLoadingProgress(id); this.progresses.set(id, progress); return progress; } }; KitLoadingService.decorators = [ { type: Injectable, args: [{ providedIn: 'root', },] } ]; /** @nocollapse */ KitLoadingService.ctorParameters = function () { return [ { type: Router, decorators: [{ type: Optional }] } ]; }; /** @nocollapse */ KitLoadingService.ngInjectableDef = i0.defineInjectable({ factory: function KitLoadingService_Factory() { return new KitLoadingService(i0.inject(i1.Router, 8)); }, token: KitLoadingService, providedIn: "root" }); return KitLoadingService; }()); export { KitLoadingService }; if (false) { /** * @type {?} * @private */ KitLoadingService.prototype.progresses; /** * @type {?} * @private */ KitLoadingService.prototype.router; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2l0LWxvYWRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3gta2l0L2NvcmUvIiwic291cmNlcyI6WyJzcmMva2l0LWxvYWRpbmcva2l0LWxvYWRpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sUUFBUSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTZEMUM7SUFNRSwyQkFDc0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFINUIsZUFBVSxHQUFHLElBQUksR0FBRyxFQUE4QixDQUFDOzs7WUFNbkQsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7UUFDdEQsNENBQTRDO1FBQzVDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVM7Ozs7WUFBQyxVQUFBLEtBQUs7Z0JBQ2hDLElBQUksS0FBSyxZQUFZLGVBQWUsRUFBRTtvQkFDcEMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDakM7Z0JBQ0QsSUFBSSxLQUFLLFlBQVksYUFBYSxFQUFFO29CQUNsQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUMvQjtZQUNILENBQUMsRUFBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsc0JBQUkscUNBQU07Ozs7UUFBVjtZQUNFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7OztPQUFBOzs7OztJQUVELG9DQUFROzs7O0lBQVIsVUFBUyxFQUFVO1FBQ2pCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDM0IsT0FBTyxtQkFBQSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBc0IsQ0FBQztTQUN0RDthQUFNOztnQkFDQyxRQUFRLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2xDLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQzs7Z0JBcENGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0JBakV3QyxNQUFNLHVCQXNFMUMsUUFBUTs7OzRCQXZFYjtDQXFHQyxBQXJDRCxJQXFDQztTQWxDWSxpQkFBaUI7Ozs7OztJQUM1Qix1Q0FBMkQ7Ozs7O0lBR3pELG1DQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgS2l0TG9hZGluZ1Byb2dyZXNzIH0gZnJvbSAnLi9raXQtbG9hZGluZy1wcm9ncmVzcyc7XHJcbmltcG9ydCB7IGtpdExvYWRpbmdHbG9iYWwgfSBmcm9tICcuL21ldGEnO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgZm9yIHByb3ZpZGluZyBsb2FkaW5nIHN0YXRlLlxyXG4gKlxyXG4gKlxyXG4gKiAjIyMgVXNhZ2VcclxuICpcclxuICogIyMjIyBHbG9iYWwgcHJvZ3Jlc3NcclxuICpcclxuICogUHJvdmlkZSBgS2l0TG9hZGluZ1NlcnZpY2VgLCBnZXQgYGdsb2JhbGAgcHJvZ3Jlc3MgYW5kIHN1YnNjcmliZSBvbiBzdGF0ZSBjaGFuZ2VzOlxyXG4gKlxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9hZGluZzogS2l0TG9hZGluZ1NlcnZpY2UpIHtcclxuICogfVxyXG4gKlxyXG4gKiBuZ09uSW5pdCgpIHtcclxuICogICB0aGlzLmxvYWRpbmcuZ2xvYmFsLnN0YXRlQ2hhbmdlc1xyXG4gKiAgICAgLnN1YnNjcmliZShzID0+IHtcclxuICogICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBzO1xyXG4gKiAgICAgfSk7XHJcbiAqIH1cclxuICogYGBgXHJcbiAqXHJcbiAqIFRoZXJlIGFyZSB0d28gc3RhdGVzOiBgS2l0TG9hZGluZ1N0YXRlLkluUHJvZ3Jlc3NgIGFuZCBgS2l0TG9hZGluZ1N0YXRlLk5vbmVgLlxyXG4gKlxyXG4gKiBTdGF0ZSBjaGFuZ2VzIG9uIGBOYXZpZ2F0aW9uU3RhcnRgIGFuZCBgTmF2aWdhdGlvbkVuZGAgZXZlbnQgYnkgZGVmYXVsdC5cclxuICpcclxuICogQWxzbyB5b3UgY2FuIHJ1biBwcm9ncmVzcyBtYW51YWxseS4gRm9yIGV4YW1wbGUsIHNob3cgbG9hZGluZyBwcm9ncmVzcyB3aGlsZSBkYXRhIGlzIGZldGNoaW5nOlxyXG4gKlxyXG4gKiBgYGB0eXBlc2NyaXB0XHJcbiAqIHRoaXMubG9hZGluZy5nbG9iYWwuc3RhcnQoJ2RhdGEnKTtcclxuICogdGhpcy5kYXRhU2VydmljZS5nZXQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gKiAgIC4uLlxyXG4gKiAgIHRoaXMubG9hZGluZy5nbG9iYWwuZW5kKCdkYXRhJyk7XHJcbiAqIH0pO1xyXG4gKiBgYGBcclxuICpcclxuICogU3RhdGUgc3dpdGNoZWQgdG8gYE5vbmVgIG9ubHkgYWZ0ZXIgYWxsIHN0YXJ0ZWQgZXZlbnRzIHdhcyBlbmRlZC5cclxuICpcclxuICogIyMjIyBDdXN0b20gcHJvZ3Jlc3NcclxuICpcclxuICogR2V0IGEgcHJvZ3Jlc3MgYnkgYC5wcm9ncmVzcyhrZXk6IHN0cmluZylgIG1ldGhvZCwgaWYgcHJvZ3Jlc3MgaXMgbm90IHByZXNlbnRlZCBpdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZC5cclxuICpcclxuICogQ3VzdG9tIHByb2dyZXNzZXMgZG8gbm90IHdhdGNoIG9uIHJvdXRlciBldmVudHMsIG9ubHkgb24gbWFudWFsIGBzdGFydGAvYGVuZGAgY2FsbHMuXHJcbiAqXHJcbiAqIGBgYHR5cGVzY3JpcHRcclxuICogdGhpcy5sb2FkaW5nLnByb2dyZXNzKCdkYXRhLWxvYWRpbmcnKS5zdGFydCgnZGF0YScpO1xyXG4gKiB0aGlzLmRhdGFTZXJ2aWNlLmdldCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAqICAgLi4uXHJcbiAqICAgdGhpcy5sb2FkaW5nLnByb2dyZXNzKCdkYXRhLWxvYWRpbmcnKS5lbmQoJ2RhdGEnKTtcclxuICogfSk7XHJcbiAqIGBgYFxyXG4gKlxyXG4gKlxyXG4gKiAjIyMgRXhhbXBsZVxyXG4gKlxyXG4gKiAqIGNvbGxlY3Rpb246bG9hZGluZy1iYXIgLVxyXG4gKiBbc291cmNlc10oaHR0cHM6Ly9naXRodWIuY29tL25neC1raXQvbmd4LWtpdC90cmVlL21hc3Rlci9wYWNrYWdlcy9jb2xsZWN0aW9uL2xpYi91aS1sb2FkaW5nLWJhciksXHJcbiAqIFtkZW1vXShodHRwczovL25neC1raXQuY29tL2NvbGxlY3Rpb24vbW9kdWxlL3VpLWxvYWRpbmctYmFyKVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEtpdExvYWRpbmdTZXJ2aWNlIHtcclxuICBwcml2YXRlIHByb2dyZXNzZXMgPSBuZXcgTWFwPHN0cmluZywgS2l0TG9hZGluZ1Byb2dyZXNzPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgKSB7XHJcbiAgICAvLyBjcmVhdGUgZ2xvYmFsIHByb2dyZXNzXHJcbiAgICBjb25zdCBnbG9iYWxQcm9ncmVzcyA9IHRoaXMucHJvZ3Jlc3Moa2l0TG9hZGluZ0dsb2JhbCk7XHJcbiAgICAvLyBzdWJzY3JpYmUgZ2xvYmFsUHJvZ3Jlc3MgdG8gcm91dGVyIGV2ZW50c1xyXG4gICAgaWYgKHRoaXMucm91dGVyKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xyXG4gICAgICAgICAgZ2xvYmFsUHJvZ3Jlc3Muc3RhcnQoJ3JvdXRpbmcnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG4gICAgICAgICAgZ2xvYmFsUHJvZ3Jlc3MuZW5kKCdyb3V0aW5nJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBnbG9iYWwoKTogS2l0TG9hZGluZ1Byb2dyZXNzIHtcclxuICAgIHJldHVybiB0aGlzLnByb2dyZXNzKGtpdExvYWRpbmdHbG9iYWwpO1xyXG4gIH1cclxuXHJcbiAgcHJvZ3Jlc3MoaWQ6IHN0cmluZyk6IEtpdExvYWRpbmdQcm9ncmVzcyB7XHJcbiAgICBpZiAodGhpcy5wcm9ncmVzc2VzLmhhcyhpZCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucHJvZ3Jlc3Nlcy5nZXQoaWQpIGFzIEtpdExvYWRpbmdQcm9ncmVzcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHByb2dyZXNzID0gbmV3IEtpdExvYWRpbmdQcm9ncmVzcyhpZCk7XHJcbiAgICAgIHRoaXMucHJvZ3Jlc3Nlcy5zZXQoaWQsIHByb2dyZXNzKTtcclxuICAgICAgcmV0dXJuIHByb2dyZXNzO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=