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
JavaScript
/**
* @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==