UNPKG

moh-common-lib

Version:

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

126 lines 10 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 { AbstractPgCheckService } from './abstract-pg-check.service'; import * as i0 from "@angular/core"; import * as i1 from "@angular/router"; import * as i2 from "./abstract-pg-check.service"; /** * @deprecated * Use this service to implement 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 `AbstractPgService` ("RegistrationService") * 2. Setup AbstractPgCheckService in NgModule providers, to `useExisting` the service from previous step. * 3. Add this RouteGuardService to same providers from previous step. * 4. Configure routes to use RouteGuardService - `canActivate` or `canActivateChild` * 5. Have each "page" in the form call `setPageIncomplete()` or `setPageComplete()` (from the "RegistrationService") * * * You must make sure to setup AbstractPgCheckService in NgModules correctly. * * \@example * //STEP 2 + STEP 3 * //registration.module.ts * providers: [ * ... * { provide: AbstractPgCheckService, useExisting: RegistrationService }, * RouteGuardService * ] * * * //STEP 4 * //registration-routing.modle.ts * const routes: Routes = [{ * path: '', * canActivateChild: [RouteGuardService] //or canActivate * } * ... * ] * * * //STEP 5 * //example.component.ts * ngOnInit() { this.setPageIncomplete(); } * continue() { this.setPageComplete(); } * * */ export class RouteGuardService { /** * @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; } /** * Pre-requisite has not be completed */ if (false === this.service.isPrerequisiteComplete()) { this.router.navigate([this.service.getStartUrl()]); return false; } if (false === this.service.isPageComplete(pageUrl)) { return false; } return true; } } RouteGuardService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ RouteGuardService.ctorParameters = () => [ { type: Router }, { type: AbstractPgCheckService } ]; /** @nocollapse */ RouteGuardService.ngInjectableDef = i0.defineInjectable({ factory: function RouteGuardService_Factory() { return new RouteGuardService(i0.inject(i1.Router), i0.inject(i2.AbstractPgCheckService)); }, token: RouteGuardService, providedIn: "root" }); if (false) { /** * @type {?} * @private */ RouteGuardService.prototype.router; /** * @type {?} * @private */ RouteGuardService.prototype.service; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtZ3VhcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL21vaC1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3JvdXRlLWd1YXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFvQixNQUFNLEVBQXFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlEckUsTUFBTSxPQUFPLGlCQUFpQjs7Ozs7SUFFNUIsWUFBb0IsTUFBYyxFQUN4QixPQUErQjtRQURyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ3hCLFlBQU8sR0FBUCxPQUFPLENBQXdCO0lBQ3pDLENBQUM7Ozs7OztJQUVELFdBQVcsQ0FDVCxLQUE2QixFQUM3QixLQUEwQjtRQUcxQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7Ozs7OztJQUVELGdCQUFnQixDQUNkLElBQTRCLEVBQzVCLEtBQTBCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7Ozs7OztJQUdPLFNBQVMsQ0FBQyxPQUFlO1FBRS9CLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUNsQyxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQ7O1dBRUc7UUFDSCxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLEVBQUU7WUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuRCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDbEQsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7O1lBM0NGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OztZQWxEMEIsTUFBTTtZQUV4QixzQkFBc0I7Ozs7Ozs7O0lBbURqQixtQ0FBc0I7Ozs7O0lBQ2hDLG9DQUF1QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2FuQWN0aXZhdGVDaGlsZCwgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxUcmVlLCBDYW5BY3RpdmF0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQWJzdHJhY3RQZ0NoZWNrU2VydmljZSB9IGZyb20gJy4vYWJzdHJhY3QtcGctY2hlY2suc2VydmljZSc7XHJcblxyXG4vKipcclxuICogQGRlcHJlY2F0ZWRcclxuICogVXNlIHRoaXMgc2VydmljZSB0byBpbXBsZW1lbnQgUm91dGUgR3VhcmRzIGluIHlvdXIgYXBwbGljYXRpb24uIFRoaXMgaXMgZm9yIGFcclxuICogdHlwaWNhbCBmb3JtIGZsb3csIHdoZXJlIHRoZSB1c2VyIG11c3QgcHJvY2VlZCBzZXF1ZW50aWFsbHkgZnJvbSBvbmUgcGFnZSB0b1xyXG4gKiB0aGUgbmV4dC5cclxuICpcclxuICogVG8gc2V0dXAsIHlvdSBtdXN0OlxyXG4gKlxyXG4gKiAxLiBDcmVhdGUgYSBzZXJ2aWNlIGltcGxlbWVudGluZyB0aGUgYWJzdHJhY3QgbWV0aG9kcyBpbiBgQWJzdHJhY3RQZ1NlcnZpY2VgIChcIlJlZ2lzdHJhdGlvblNlcnZpY2VcIilcclxuICogMi4gU2V0dXAgQWJzdHJhY3RQZ0NoZWNrU2VydmljZSBpbiBOZ01vZHVsZSBwcm92aWRlcnMsIHRvIGB1c2VFeGlzdGluZ2AgdGhlIHNlcnZpY2UgZnJvbSBwcmV2aW91cyBzdGVwLlxyXG4gKiAzLiBBZGQgdGhpcyBSb3V0ZUd1YXJkU2VydmljZSB0byBzYW1lIHByb3ZpZGVycyBmcm9tIHByZXZpb3VzIHN0ZXAuXHJcbiAqIDQuIENvbmZpZ3VyZSByb3V0ZXMgdG8gdXNlIFJvdXRlR3VhcmRTZXJ2aWNlIC0gYGNhbkFjdGl2YXRlYCBvciBgY2FuQWN0aXZhdGVDaGlsZGBcclxuICogNS4gSGF2ZSBlYWNoIFwicGFnZVwiIGluIHRoZSBmb3JtIGNhbGwgYHNldFBhZ2VJbmNvbXBsZXRlKClgIG9yIGBzZXRQYWdlQ29tcGxldGUoKWAgKGZyb20gdGhlIFwiUmVnaXN0cmF0aW9uU2VydmljZVwiKVxyXG4gKlxyXG4gKlxyXG4gKiBZb3UgbXVzdCBtYWtlIHN1cmUgdG8gc2V0dXAgQWJzdHJhY3RQZ0NoZWNrU2VydmljZSBpbiBOZ01vZHVsZXMgY29ycmVjdGx5LlxyXG4gKlxyXG4gKiAgQGV4YW1wbGVcclxuICogICAgICAgICAgICAgICAgLy9TVEVQIDIgKyBTVEVQIDNcclxuICogICAgICAgICAgICAgICAgLy9yZWdpc3RyYXRpb24ubW9kdWxlLnRzXHJcbiAqICAgICAgICAgICAgICAgIHByb3ZpZGVyczogW1xyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgIC4uLlxyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogQWJzdHJhY3RQZ0NoZWNrU2VydmljZSwgdXNlRXhpc3Rpbmc6IFJlZ2lzdHJhdGlvblNlcnZpY2UgfSxcclxuICogICAgICAgICAgICAgICAgICAgICAgICBSb3V0ZUd1YXJkU2VydmljZVxyXG4gKiAgICAgICAgICAgICAgICBdXHJcbiAqXHJcbiAqXHJcbiAqICAgICAgICAgICAgICAgIC8vU1RFUCA0XHJcbiAqICAgICAgICAgICAgICAgIC8vcmVnaXN0cmF0aW9uLXJvdXRpbmcubW9kbGUudHNcclxuICogICAgICAgICAgICAgICAgY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbe1xyXG4gKiAgICAgICAgICAgICAgICAgICBwYXRoOiAnJyxcclxuICogICAgICAgICAgICAgICAgICAgY2FuQWN0aXZhdGVDaGlsZDogW1JvdXRlR3VhcmRTZXJ2aWNlXSAvL29yIGNhbkFjdGl2YXRlXHJcbiAqICAgICAgICAgICAgICAgICAgfVxyXG4gKiAgICAgICAgICAgICAgICAgICAuLi5cclxuICogICAgICAgICAgICAgICAgXVxyXG4gKlxyXG4gKlxyXG4gKiAgICAgICAgICAgICAgICAvL1NURVAgNVxyXG4gKiAgICAgICAgICAgICAgICAvL2V4YW1wbGUuY29tcG9uZW50LnRzXHJcbiAqICAgICAgICAgICAgICAgIG5nT25Jbml0KCkgeyB0aGlzLnNldFBhZ2VJbmNvbXBsZXRlKCk7IH1cclxuICogICAgICAgICAgICAgICAgY29udGludWUoKSB7IHRoaXMuc2V0UGFnZUNvbXBsZXRlKCk7IH1cclxuICpcclxuICpcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFJvdXRlR3VhcmRTZXJ2aWNlIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBBYnN0cmFjdFBnQ2hlY2tTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBjYW5BY3RpdmF0ZShcclxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcclxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHwgYm9vbGVhbiB8IFVybFRyZWUge1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9jb250aW51ZShzdGF0ZS51cmwpO1xyXG4gIH1cclxuXHJcbiAgY2FuQWN0aXZhdGVDaGlsZChcclxuICAgIG5leHQ6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udGludWUoc3RhdGUudXJsKTtcclxuICB9XHJcblxyXG4gIC8qKiBMb2dpYyB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYWxsb3cgdG8gY29udGludWUgdG8gbmV4dCBwYWdlICovXHJcbiAgcHJpdmF0ZSBfY29udGludWUocGFnZVVybDogc3RyaW5nKTogYm9vbGVhbiB7XHJcblxyXG4gICAgaWYgKHRoaXMuc2VydmljZS5jYW5CeXBhc3NHdWFyZHMoKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFByZS1yZXF1aXNpdGUgaGFzIG5vdCBiZSBjb21wbGV0ZWRcclxuICAgICAqL1xyXG4gICAgaWYgKGZhbHNlID09PSB0aGlzLnNlcnZpY2UuaXNQcmVyZXF1aXNpdGVDb21wbGV0ZSgpKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLnNlcnZpY2UuZ2V0U3RhcnRVcmwoKV0pO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZhbHNlID09PSB0aGlzLnNlcnZpY2UuaXNQYWdlQ29tcGxldGUocGFnZVVybCkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxufVxyXG5cclxuIl19