UNPKG

moh-common-lib

Version:

A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).

133 lines 10.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import { Router } from '@angular/router'; import { AbstractPageGuardService } from './abstract-page-guard.service'; import * as i0 from "@angular/core"; import * as i1 from "@angular/router"; import * as i2 from "./abstract-page-guard.service"; /** * Use this service to implement Load Page Route Guards in your application. This is for a * typical form flow, where the user must proceed sequentially from one page to * the next. * * To setup, you must: * * 1. Create a service implementing the abstract methods in `AbstractPageGuardService` * 2. Setup AbstractPageGuardService in NgModule providers, to `useExisting` the service from previous step. * 3. Add this LoadPageGuardService to same providers from previous step. * 4. Configure routes to use LoadPageGuardService - `canActivate` or `canActivateChild` * 5. Have each "page" in the form call `setPageIncomplete()` or `setPageComplete()` (from the "PageStateService") * * * You must make sure to setup AbstractPageGuardService in NgModules correctly. * * \@example * //STEP 2 + STEP 3 * //registration.module.ts * providers: [ * ... * { provide: AbstractPageGuardService, useExisting: DefaultPageGuardService }, * LoadPageGuardService * ] * * * //STEP 4 * //registration-routing.modle.ts * const routes: Routes = [{ * path: '', * canActivateChild: [LoadPageGuardService] //or canActivate * } * ... * ] * * * //STEP 5 * //example.component.ts * ngOnInit() { this.pageService.setPageIncomplete(); } * continue() { this.pageService.setPageComplete(); } * * */ var LoadPageGuardService = /** @class */ (function () { function LoadPageGuardService(router, service) { this.router = router; this.service = service; } /** * @param {?} route * @param {?} state * @return {?} */ LoadPageGuardService.prototype.canActivate = /** * @param {?} route * @param {?} state * @return {?} */ function (route, state) { return this._continue(state.url); }; /** * @param {?} next * @param {?} state * @return {?} */ LoadPageGuardService.prototype.canActivateChild = /** * @param {?} next * @param {?} state * @return {?} */ function (next, state) { return this._continue(state.url); }; /** Logic to determine whether or not allow to continue to next page */ /** * Logic to determine whether or not allow to continue to next page * @private * @param {?} pageUrl * @return {?} */ LoadPageGuardService.prototype._continue = /** * Logic to determine whether or not allow to continue to next page * @private * @param {?} pageUrl * @return {?} */ function (pageUrl) { if (this.service.canBypassGuards()) { return true; } /** * Logic within method is specific to application */ return this.service.canNavigateToUrl(pageUrl); }; LoadPageGuardService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ LoadPageGuardService.ctorParameters = function () { return [ { type: Router }, { type: AbstractPageGuardService } ]; }; /** @nocollapse */ LoadPageGuardService.ngInjectableDef = i0.defineInjectable({ factory: function LoadPageGuardService_Factory() { return new LoadPageGuardService(i0.inject(i1.Router), i0.inject(i2.AbstractPageGuardService)); }, token: LoadPageGuardService, providedIn: "root" }); return LoadPageGuardService; }()); export { LoadPageGuardService }; if (false) { /** * @type {?} * @private */ LoadPageGuardService.prototype.router; /** * @type {?} * @private */ LoadPageGuardService.prototype.service; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1wYWdlLWd1YXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9tb2gtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9sb2FkLXBhZ2UtZ3VhcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQW9CLE1BQU0sRUFBcUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE4Q3pFO0lBS0UsOEJBQW9CLE1BQWMsRUFBVSxPQUFpQztRQUF6RCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7SUFDN0UsQ0FBQzs7Ozs7O0lBRUQsMENBQVc7Ozs7O0lBQVgsVUFDRSxLQUE2QixFQUM3QixLQUEwQjtRQUcxQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7Ozs7OztJQUVELCtDQUFnQjs7Ozs7SUFBaEIsVUFDRSxJQUE0QixFQUM1QixLQUEwQjtRQUMxQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCx1RUFBdUU7Ozs7Ozs7SUFDL0Qsd0NBQVM7Ozs7OztJQUFqQixVQUFrQixPQUFlO1FBRS9CLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUNsQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQ7O1dBRUc7UUFDSCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEQsQ0FBQzs7Z0JBakNGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0JBbEQwQixNQUFNO2dCQUV4Qix3QkFBd0I7OzsrQkFIakM7Q0FtRkMsQUFsQ0QsSUFrQ0M7U0EvQlksb0JBQW9COzs7Ozs7SUFFbkIsc0NBQXNCOzs7OztJQUFFLHVDQUF5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2FuQWN0aXZhdGVDaGlsZCwgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxUcmVlLCBDYW5BY3RpdmF0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQWJzdHJhY3RQYWdlR3VhcmRTZXJ2aWNlIH0gZnJvbSAnLi9hYnN0cmFjdC1wYWdlLWd1YXJkLnNlcnZpY2UnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBVc2UgdGhpcyBzZXJ2aWNlIHRvIGltcGxlbWVudCBMb2FkIFBhZ2UgUm91dGUgR3VhcmRzIGluIHlvdXIgYXBwbGljYXRpb24uIFRoaXMgaXMgZm9yIGFcclxuICogdHlwaWNhbCBmb3JtIGZsb3csIHdoZXJlIHRoZSB1c2VyIG11c3QgcHJvY2VlZCBzZXF1ZW50aWFsbHkgZnJvbSBvbmUgcGFnZSB0b1xyXG4gKiB0aGUgbmV4dC5cclxuICpcclxuICogVG8gc2V0dXAsIHlvdSBtdXN0OlxyXG4gKlxyXG4gKiAxLiBDcmVhdGUgYSBzZXJ2aWNlIGltcGxlbWVudGluZyB0aGUgYWJzdHJhY3QgbWV0aG9kcyBpbiBgQWJzdHJhY3RQYWdlR3VhcmRTZXJ2aWNlYFxyXG4gKiAyLiBTZXR1cCBBYnN0cmFjdFBhZ2VHdWFyZFNlcnZpY2UgaW4gTmdNb2R1bGUgcHJvdmlkZXJzLCB0byBgdXNlRXhpc3RpbmdgIHRoZSBzZXJ2aWNlIGZyb20gcHJldmlvdXMgc3RlcC5cclxuICogMy4gQWRkIHRoaXMgTG9hZFBhZ2VHdWFyZFNlcnZpY2UgdG8gc2FtZSBwcm92aWRlcnMgZnJvbSBwcmV2aW91cyBzdGVwLlxyXG4gKiA0LiBDb25maWd1cmUgcm91dGVzIHRvIHVzZSBMb2FkUGFnZUd1YXJkU2VydmljZSAtIGBjYW5BY3RpdmF0ZWAgb3IgYGNhbkFjdGl2YXRlQ2hpbGRgXHJcbiAqIDUuIEhhdmUgZWFjaCBcInBhZ2VcIiBpbiB0aGUgZm9ybSBjYWxsIGBzZXRQYWdlSW5jb21wbGV0ZSgpYCBvciBgc2V0UGFnZUNvbXBsZXRlKClgIChmcm9tIHRoZSBcIlBhZ2VTdGF0ZVNlcnZpY2VcIilcclxuICpcclxuICpcclxuICogWW91IG11c3QgbWFrZSBzdXJlIHRvIHNldHVwIEFic3RyYWN0UGFnZUd1YXJkU2VydmljZSBpbiBOZ01vZHVsZXMgY29ycmVjdGx5LlxyXG4gKlxyXG4gKiAgQGV4YW1wbGVcclxuICogICAgICAgICAgICAgICAgLy9TVEVQIDIgKyBTVEVQIDNcclxuICogICAgICAgICAgICAgICAgLy9yZWdpc3RyYXRpb24ubW9kdWxlLnRzXHJcbiAqICAgICAgICAgICAgICAgIHByb3ZpZGVyczogW1xyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgIC4uLlxyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogQWJzdHJhY3RQYWdlR3VhcmRTZXJ2aWNlLCB1c2VFeGlzdGluZzogRGVmYXVsdFBhZ2VHdWFyZFNlcnZpY2UgfSxcclxuICogICAgICAgICAgICAgICAgICAgICAgICBMb2FkUGFnZUd1YXJkU2VydmljZVxyXG4gKiAgICAgICAgICAgICAgICBdXHJcbiAqXHJcbiAqXHJcbiAqICAgICAgICAgICAgICAgIC8vU1RFUCA0XHJcbiAqICAgICAgICAgICAgICAgIC8vcmVnaXN0cmF0aW9uLXJvdXRpbmcubW9kbGUudHNcclxuICogICAgICAgICAgICAgICAgY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbe1xyXG4gKiAgICAgICAgICAgICAgICAgICBwYXRoOiAnJyxcclxuICogICAgICAgICAgICAgICAgICAgY2FuQWN0aXZhdGVDaGlsZDogW0xvYWRQYWdlR3VhcmRTZXJ2aWNlXSAvL29yIGNhbkFjdGl2YXRlXHJcbiAqICAgICAgICAgICAgICAgICAgfVxyXG4gKiAgICAgICAgICAgICAgICAgICAuLi5cclxuICogICAgICAgICAgICAgICAgXVxyXG4gKlxyXG4gKlxyXG4gKiAgICAgICAgICAgICAgICAvL1NURVAgNVxyXG4gKiAgICAgICAgICAgICAgICAvL2V4YW1wbGUuY29tcG9uZW50LnRzXHJcbiAqICAgICAgICAgICAgICAgIG5nT25Jbml0KCkgeyB0aGlzLnBhZ2VTZXJ2aWNlLnNldFBhZ2VJbmNvbXBsZXRlKCk7IH1cclxuICogICAgICAgICAgICAgICAgY29udGludWUoKSB7IHRoaXMucGFnZVNlcnZpY2Uuc2V0UGFnZUNvbXBsZXRlKCk7IH1cclxuICpcclxuICpcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIExvYWRQYWdlR3VhcmRTZXJ2aWNlIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHNlcnZpY2U6IEFic3RyYWN0UGFnZUd1YXJkU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgY2FuQWN0aXZhdGUoXHJcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XHJcbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4gfCBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IGJvb2xlYW4gfCBVcmxUcmVlIHtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5fY29udGludWUoc3RhdGUudXJsKTtcclxuICB9XHJcblxyXG4gIGNhbkFjdGl2YXRlQ2hpbGQoXHJcbiAgICBuZXh0OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgUHJvbWlzZTxib29sZWFuPiB8IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRpbnVlKHN0YXRlLnVybCk7XHJcbiAgfVxyXG5cclxuICAvKiogTG9naWMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGFsbG93IHRvIGNvbnRpbnVlIHRvIG5leHQgcGFnZSAqL1xyXG4gIHByaXZhdGUgX2NvbnRpbnVlKHBhZ2VVcmw6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG5cclxuICAgIGlmICh0aGlzLnNlcnZpY2UuY2FuQnlwYXNzR3VhcmRzKCkpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2dpYyB3aXRoaW4gbWV0aG9kIGlzIHNwZWNpZmljIHRvIGFwcGxpY2F0aW9uXHJcbiAgICAgKi9cclxuICAgIHJldHVybiB0aGlzLnNlcnZpY2UuY2FuTmF2aWdhdGVUb1VybChwYWdlVXJsKTtcclxuICB9XHJcbn1cclxuIl19