UNPKG

moh-common-lib

Version:

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

118 lines 9.34 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(); } * * */ export class LoadPageGuardService { /** * @param {?} router * @param {?} service */ constructor(router, service) { this.router = router; this.service = service; } /** * @param {?} route * @param {?} state * @return {?} */ canActivate(route, state) { return this._continue(state.url); } /** * @param {?} next * @param {?} state * @return {?} */ canActivateChild(next, state) { return this._continue(state.url); } /** * Logic to determine whether or not allow to continue to next page * @private * @param {?} pageUrl * @return {?} */ _continue(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 = () => [ { 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" }); if (false) { /** * @type {?} * @private */ LoadPageGuardService.prototype.router; /** * @type {?} * @private */ LoadPageGuardService.prototype.service; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1wYWdlLWd1YXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9tb2gtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9sb2FkLXBhZ2UtZ3VhcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQW9CLE1BQU0sRUFBcUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpRHpFLE1BQU0sT0FBTyxvQkFBb0I7Ozs7O0lBRS9CLFlBQW9CLE1BQWMsRUFBVSxPQUFpQztRQUF6RCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7SUFDN0UsQ0FBQzs7Ozs7O0lBRUQsV0FBVyxDQUNULEtBQTZCLEVBQzdCLEtBQTBCO1FBRzFCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7Ozs7O0lBRUQsZ0JBQWdCLENBQ2QsSUFBNEIsRUFDNUIsS0FBMEI7UUFDMUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDOzs7Ozs7O0lBR08sU0FBUyxDQUFDLE9BQWU7UUFFL0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQ2xDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRDs7V0FFRztRQUNILE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxDQUFDOzs7WUFqQ0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7O1lBbEQwQixNQUFNO1lBRXhCLHdCQUF3Qjs7Ozs7Ozs7SUFtRG5CLHNDQUFzQjs7Ozs7SUFBRSx1Q0FBeUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENhbkFjdGl2YXRlQ2hpbGQsIFJvdXRlciwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyU3RhdGVTbmFwc2hvdCwgVXJsVHJlZSwgQ2FuQWN0aXZhdGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFic3RyYWN0UGFnZUd1YXJkU2VydmljZSB9IGZyb20gJy4vYWJzdHJhY3QtcGFnZS1ndWFyZC5zZXJ2aWNlJztcclxuXHJcblxyXG4vKipcclxuICogVXNlIHRoaXMgc2VydmljZSB0byBpbXBsZW1lbnQgTG9hZCBQYWdlIFJvdXRlIEd1YXJkcyBpbiB5b3VyIGFwcGxpY2F0aW9uLiBUaGlzIGlzIGZvciBhXHJcbiAqIHR5cGljYWwgZm9ybSBmbG93LCB3aGVyZSB0aGUgdXNlciBtdXN0IHByb2NlZWQgc2VxdWVudGlhbGx5IGZyb20gb25lIHBhZ2UgdG9cclxuICogdGhlIG5leHQuXHJcbiAqXHJcbiAqIFRvIHNldHVwLCB5b3UgbXVzdDpcclxuICpcclxuICogMS4gQ3JlYXRlIGEgc2VydmljZSBpbXBsZW1lbnRpbmcgdGhlIGFic3RyYWN0IG1ldGhvZHMgaW4gYEFic3RyYWN0UGFnZUd1YXJkU2VydmljZWBcclxuICogMi4gU2V0dXAgQWJzdHJhY3RQYWdlR3VhcmRTZXJ2aWNlIGluIE5nTW9kdWxlIHByb3ZpZGVycywgdG8gYHVzZUV4aXN0aW5nYCB0aGUgc2VydmljZSBmcm9tIHByZXZpb3VzIHN0ZXAuXHJcbiAqIDMuIEFkZCB0aGlzIExvYWRQYWdlR3VhcmRTZXJ2aWNlIHRvIHNhbWUgcHJvdmlkZXJzIGZyb20gcHJldmlvdXMgc3RlcC5cclxuICogNC4gQ29uZmlndXJlIHJvdXRlcyB0byB1c2UgTG9hZFBhZ2VHdWFyZFNlcnZpY2UgLSBgY2FuQWN0aXZhdGVgIG9yIGBjYW5BY3RpdmF0ZUNoaWxkYFxyXG4gKiA1LiBIYXZlIGVhY2ggXCJwYWdlXCIgaW4gdGhlIGZvcm0gY2FsbCBgc2V0UGFnZUluY29tcGxldGUoKWAgb3IgYHNldFBhZ2VDb21wbGV0ZSgpYCAoZnJvbSB0aGUgXCJQYWdlU3RhdGVTZXJ2aWNlXCIpXHJcbiAqXHJcbiAqXHJcbiAqIFlvdSBtdXN0IG1ha2Ugc3VyZSB0byBzZXR1cCBBYnN0cmFjdFBhZ2VHdWFyZFNlcnZpY2UgaW4gTmdNb2R1bGVzIGNvcnJlY3RseS5cclxuICpcclxuICogIEBleGFtcGxlXHJcbiAqICAgICAgICAgICAgICAgIC8vU1RFUCAyICsgU1RFUCAzXHJcbiAqICAgICAgICAgICAgICAgIC8vcmVnaXN0cmF0aW9uLm1vZHVsZS50c1xyXG4gKiAgICAgICAgICAgICAgICBwcm92aWRlcnM6IFtcclxuICogICAgICAgICAgICAgICAgICAgICAgICAuLi5cclxuICogICAgICAgICAgICAgICAgICAgICAgICB7IHByb3ZpZGU6IEFic3RyYWN0UGFnZUd1YXJkU2VydmljZSwgdXNlRXhpc3Rpbmc6IERlZmF1bHRQYWdlR3VhcmRTZXJ2aWNlIH0sXHJcbiAqICAgICAgICAgICAgICAgICAgICAgICAgTG9hZFBhZ2VHdWFyZFNlcnZpY2VcclxuICogICAgICAgICAgICAgICAgXVxyXG4gKlxyXG4gKlxyXG4gKiAgICAgICAgICAgICAgICAvL1NURVAgNFxyXG4gKiAgICAgICAgICAgICAgICAvL3JlZ2lzdHJhdGlvbi1yb3V0aW5nLm1vZGxlLnRzXHJcbiAqICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlczogUm91dGVzID0gW3tcclxuICogICAgICAgICAgICAgICAgICAgcGF0aDogJycsXHJcbiAqICAgICAgICAgICAgICAgICAgIGNhbkFjdGl2YXRlQ2hpbGQ6IFtMb2FkUGFnZUd1YXJkU2VydmljZV0gLy9vciBjYW5BY3RpdmF0ZVxyXG4gKiAgICAgICAgICAgICAgICAgIH1cclxuICogICAgICAgICAgICAgICAgICAgLi4uXHJcbiAqICAgICAgICAgICAgICAgIF1cclxuICpcclxuICpcclxuICogICAgICAgICAgICAgICAgLy9TVEVQIDVcclxuICogICAgICAgICAgICAgICAgLy9leGFtcGxlLmNvbXBvbmVudC50c1xyXG4gKiAgICAgICAgICAgICAgICBuZ09uSW5pdCgpIHsgdGhpcy5wYWdlU2VydmljZS5zZXRQYWdlSW5jb21wbGV0ZSgpOyB9XHJcbiAqICAgICAgICAgICAgICAgIGNvbnRpbnVlKCkgeyB0aGlzLnBhZ2VTZXJ2aWNlLnNldFBhZ2VDb21wbGV0ZSgpOyB9XHJcbiAqXHJcbiAqXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2FkUGFnZUd1YXJkU2VydmljZSBpbXBsZW1lbnRzIENhbkFjdGl2YXRlLCBDYW5BY3RpdmF0ZUNoaWxkIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBzZXJ2aWNlOiBBYnN0cmFjdFBhZ2VHdWFyZFNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIGNhbkFjdGl2YXRlKFxyXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdFxyXG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IFVybFRyZWU+IHwgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4gfCBib29sZWFuIHwgVXJsVHJlZSB7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRpbnVlKHN0YXRlLnVybCk7XHJcbiAgfVxyXG5cclxuICBjYW5BY3RpdmF0ZUNoaWxkKFxyXG4gICAgbmV4dDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiB8IFByb21pc2U8Ym9vbGVhbj4gfCBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jb250aW51ZShzdGF0ZS51cmwpO1xyXG4gIH1cclxuXHJcbiAgLyoqIExvZ2ljIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBhbGxvdyB0byBjb250aW51ZSB0byBuZXh0IHBhZ2UgKi9cclxuICBwcml2YXRlIF9jb250aW51ZShwYWdlVXJsOiBzdHJpbmcpOiBib29sZWFuIHtcclxuXHJcbiAgICBpZiAodGhpcy5zZXJ2aWNlLmNhbkJ5cGFzc0d1YXJkcygpKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9naWMgd2l0aGluIG1ldGhvZCBpcyBzcGVjaWZpYyB0byBhcHBsaWNhdGlvblxyXG4gICAgICovXHJcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmNhbk5hdmlnYXRlVG9VcmwocGFnZVVybCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==