moh-common-lib
Version:
A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).
86 lines • 6.95 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Directive, Input } from '@angular/core';
import { NG_VALIDATORS } from '@angular/forms';
// local function
/**
* @param {?} control
* @param {?} hasMask
* @param {?} bcOnly
* @return {?}
*/
function validatePC(control, hasMask, bcOnly) {
if (control.value) {
if (hasMask) {
/** @type {?} */
const cdnFormat = /^[A-Za-z][0-9][A-Za-z]\s?[0-9][A-Za-z][0-9]$/;
if (!cdnFormat.test(control.value)) {
return { 'pattern': true };
}
}
else {
/** @type {?} */
const criteria = RegExp('^(?=.*[a-zA-Z0-9])[a-zA-Z0-9 ]*$');
if (!criteria.test(control.value)) {
return { 'invalidChar': true };
}
}
if (bcOnly) {
// Valid characters for BC postal code
/** @type {?} */
const bcFormat = RegExp('^[Vv]\\d[ABCEGHJ-NPRSTV-Z][ ]?\\d[ABCEGHJ-NPRSTV-Z]\\d$');
if (!bcFormat.test(control.value)) {
return { 'invalidBCPostal': true };
}
}
}
return null;
}
/**
* @param {?} hasMask
* @param {?} bcOnly
* @return {?}
*/
export function commonValidatePostalcode(hasMask, bcOnly) {
return (/**
* @param {?} control
* @return {?}
*/
(control) => {
return validatePC(control, hasMask, bcOnly);
});
}
export class ValidatePostalcodeDirective {
constructor() {
this.hasMask = true;
this.bcOnly = false;
}
/**
* @param {?} control
* @return {?}
*/
validate(control) {
return validatePC(control, this.hasMask, this.bcOnly);
}
}
ValidatePostalcodeDirective.decorators = [
{ type: Directive, args: [{
selector: '[commonValidatePostalcode]',
providers: [
{ provide: NG_VALIDATORS, useExisting: ValidatePostalcodeDirective, multi: true }
]
},] }
];
ValidatePostalcodeDirective.propDecorators = {
hasMask: [{ type: Input }],
bcOnly: [{ type: Input }]
};
if (false) {
/** @type {?} */
ValidatePostalcodeDirective.prototype.hasMask;
/** @type {?} */
ValidatePostalcodeDirective.prototype.bcOnly;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtcG9zdGFsY29kZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9tb2gtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3Bvc3RhbC1jb2RlL3ZhbGlkYXRlLXBvc3RhbGNvZGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQWdDLGFBQWEsRUFBYSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQUd4RixTQUFTLFVBQVUsQ0FBQyxPQUF3QixFQUFFLE9BQWdCLEVBQUUsTUFBZTtJQUU3RSxJQUFLLE9BQU8sQ0FBQyxLQUFLLEVBQUc7UUFFbkIsSUFBSyxPQUFPLEVBQUc7O2tCQUNQLFNBQVMsR0FBVyw4Q0FBOEM7WUFFeEUsSUFBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUUsT0FBTyxDQUFDLEtBQUssQ0FBRSxFQUFHO2dCQUN0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO2FBQzVCO1NBQ0Y7YUFBTTs7a0JBQ0MsUUFBUSxHQUFXLE1BQU0sQ0FBRSxrQ0FBa0MsQ0FBRTtZQUVyRSxJQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBRSxPQUFPLENBQUMsS0FBSyxDQUFFLEVBQUc7Z0JBQ3JDLE9BQVEsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDakM7U0FDRjtRQUVELElBQUssTUFBTSxFQUFHOzs7a0JBRU4sUUFBUSxHQUFXLE1BQU0sQ0FBQyx5REFBeUQsQ0FBQztZQUMxRixJQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBRSxPQUFPLENBQUMsS0FBSyxDQUFFLEVBQUc7Z0JBQ3JDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUNwQztTQUNGO0tBQ0Y7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7Ozs7OztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FBRSxPQUFnQixFQUFFLE1BQWU7SUFFekU7Ozs7SUFBTyxDQUFFLE9BQXdCLEVBQXNDLEVBQUU7UUFDdkUsT0FBTyxVQUFVLENBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRyxNQUFNLENBQUMsQ0FBQztJQUNoRCxDQUFDLEVBQUM7QUFDSixDQUFDO0FBUUQsTUFBTSxPQUFPLDJCQUEyQjtJQU54QztRQU9XLFlBQU8sR0FBWSxJQUFJLENBQUM7UUFDeEIsV0FBTSxHQUFZLEtBQUssQ0FBQztJQU9uQyxDQUFDOzs7OztJQUxDLFFBQVEsQ0FBRSxPQUF3QjtRQUVoQyxPQUFPLFVBQVUsQ0FBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRyxJQUFJLENBQUMsTUFBTSxDQUFFLENBQUM7SUFDM0QsQ0FBQzs7O1lBYkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw0QkFBNEI7Z0JBQ3RDLFNBQVMsRUFBRTtvQkFDVCxFQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7aUJBQ2hGO2FBQ0Y7OztzQkFFRSxLQUFLO3FCQUNMLEtBQUs7Ozs7SUFETiw4Q0FBaUM7O0lBQ2pDLDZDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVmFsaWRhdG9yRm4sIEFic3RyYWN0Q29udHJvbCwgTkdfVkFMSURBVE9SUywgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLy8gbG9jYWwgZnVuY3Rpb25cclxuZnVuY3Rpb24gdmFsaWRhdGVQQyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGhhc01hc2s6IGJvb2xlYW4sIGJjT25seTogYm9vbGVhbik6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHwgbnVsbCB7XHJcblxyXG4gIGlmICggY29udHJvbC52YWx1ZSApIHtcclxuXHJcbiAgICBpZiAoIGhhc01hc2sgKSB7XHJcbiAgICAgIGNvbnN0IGNkbkZvcm1hdDogUmVnRXhwID0gL15bQS1aYS16XVswLTldW0EtWmEtel1cXHM/WzAtOV1bQS1aYS16XVswLTldJC87XHJcblxyXG4gICAgICBpZiAoICFjZG5Gb3JtYXQudGVzdCggY29udHJvbC52YWx1ZSApICkge1xyXG4gICAgICAgIHJldHVybiB7ICdwYXR0ZXJuJzogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBjcml0ZXJpYTogUmVnRXhwID0gUmVnRXhwKCAnXig/PS4qW2EtekEtWjAtOV0pW2EtekEtWjAtOSBdKiQnICk7XHJcblxyXG4gICAgICBpZiAoICFjcml0ZXJpYS50ZXN0KCBjb250cm9sLnZhbHVlICkgKSB7XHJcbiAgICAgICAgcmV0dXJuICB7ICdpbnZhbGlkQ2hhcic6IHRydWUgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICggYmNPbmx5ICkge1xyXG4gICAgICAvLyBWYWxpZCBjaGFyYWN0ZXJzIGZvciBCQyBwb3N0YWwgY29kZVxyXG4gICAgICBjb25zdCBiY0Zvcm1hdDogUmVnRXhwID0gUmVnRXhwKCdeW1Z2XVxcXFxkW0FCQ0VHSEotTlBSU1RWLVpdWyBdP1xcXFxkW0FCQ0VHSEotTlBSU1RWLVpdXFxcXGQkJyk7XHJcbiAgICAgIGlmICggIWJjRm9ybWF0LnRlc3QoIGNvbnRyb2wudmFsdWUgKSApIHtcclxuICAgICAgICByZXR1cm4geyAnaW52YWxpZEJDUG9zdGFsJzogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29tbW9uVmFsaWRhdGVQb3N0YWxjb2RlKCBoYXNNYXNrOiBib29sZWFuLCBiY09ubHk6IGJvb2xlYW4gKTogVmFsaWRhdG9yRm4ge1xyXG5cclxuICByZXR1cm4gKCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gfCBudWxsID0+IHtcclxuICAgIHJldHVybiB2YWxpZGF0ZVBDKCBjb250cm9sLCBoYXNNYXNrICwgYmNPbmx5KTtcclxuICB9O1xyXG59XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tjb21tb25WYWxpZGF0ZVBvc3RhbGNvZGVdJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtwcm92aWRlOiBOR19WQUxJREFUT1JTLCB1c2VFeGlzdGluZzogVmFsaWRhdGVQb3N0YWxjb2RlRGlyZWN0aXZlLCBtdWx0aTogdHJ1ZX1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWYWxpZGF0ZVBvc3RhbGNvZGVEaXJlY3RpdmUgaW1wbGVtZW50cyBWYWxpZGF0b3Ige1xyXG4gIEBJbnB1dCgpIGhhc01hc2s6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGJjT25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICB2YWxpZGF0ZSggY29udHJvbDogQWJzdHJhY3RDb250cm9sICk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHwgbnVsbCB7XHJcblxyXG4gICAgcmV0dXJuIHZhbGlkYXRlUEMoIGNvbnRyb2wsIHRoaXMuaGFzTWFzayAsIHRoaXMuYmNPbmx5ICk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=