moh-common-lib
Version:
A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).
247 lines • 17 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, Input, Output, EventEmitter, Optional, Self } from '@angular/core';
import { NgControl } from '@angular/forms';
import { LETTER, NUMBER, SPACE } from '../../models/mask.constants';
import { Base } from '../../models/base';
var PostalCodeComponent = /** @class */ (function (_super) {
tslib_1.__extends(PostalCodeComponent, _super);
function PostalCodeComponent(controlDir) {
var _this = _super.call(this) || this;
_this.controlDir = controlDir;
_this.label = 'Postal Code';
_this.displayMask = true;
_this.maxlen = '250';
_this.labelforId = 'postalCode_' + _this.objectId;
_this.disabled = false;
_this.required = false;
_this.valueChange = new EventEmitter();
_this.blurEvent = new EventEmitter();
_this.postalCode = '';
_this.defaultErrMsg = {
required: 'is required.',
invalidChar: 'must contain letters and/or numbers and may include blank characters.',
pattern: 'Must be in the format A1A 1A1',
invalidBCPostal: 'Invalid postal code for British Columbia.'
};
_this._onChange = (/**
* @param {?} _
* @return {?}
*/
function (_) { });
_this._onTouched = (/**
* @param {?} _
* @return {?}
*/
function (_) { });
if (controlDir) {
controlDir.valueAccessor = _this;
}
_this.mask = [LETTER, NUMBER, LETTER, SPACE, NUMBER, LETTER, NUMBER];
return _this;
}
Object.defineProperty(PostalCodeComponent.prototype, "value", {
get: /**
* @return {?}
*/
function () {
return this.postalCode;
},
set: /**
* @param {?} val
* @return {?}
*/
function (val) {
if (val) {
this.postalCode = val;
}
},
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
PostalCodeComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.setErrorMsg();
};
/**
* @param {?} value
* @return {?}
*/
PostalCodeComponent.prototype.onValueChange = /**
* @param {?} value
* @return {?}
*/
function (value) {
if (value !== this.postalCode) { // IE fix when focus does not display required error
this._onChange(value);
this.valueChange.emit(value);
this.postalCode = value;
}
};
/**
* @param {?} event
* @return {?}
*/
PostalCodeComponent.prototype.onBlurEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this._onTouched(event);
this.blurEvent.emit(event);
};
/**
* @param {?} value
* @return {?}
*/
PostalCodeComponent.prototype.writeValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
if (value !== undefined) {
this.postalCode = value;
}
};
// Register change functiong
// Register change functiong
/**
* @param {?} fn
* @return {?}
*/
PostalCodeComponent.prototype.registerOnChange =
// Register change functiong
/**
* @param {?} fn
* @return {?}
*/
function (fn) {
this._onChange = fn;
};
// Register touched function
// Register touched function
/**
* @param {?} fn
* @return {?}
*/
PostalCodeComponent.prototype.registerOnTouched =
// Register touched function
/**
* @param {?} fn
* @return {?}
*/
function (fn) {
this._onTouched = fn;
};
/**
* @param {?} isDisabled
* @return {?}
*/
PostalCodeComponent.prototype.setDisabledState = /**
* @param {?} isDisabled
* @return {?}
*/
function (isDisabled) {
this.disabled = isDisabled;
};
/**
* Upper cases letters in string
*/
/**
* Upper cases letters in string
* @param {?} text
* @return {?}
*/
PostalCodeComponent.prototype.upperCasePipe = /**
* Upper cases letters in string
* @param {?} text
* @return {?}
*/
function (text) {
return text.toUpperCase();
};
/**
* @private
* @return {?}
*/
PostalCodeComponent.prototype.setErrorMsg = /**
* @private
* @return {?}
*/
function () {
var _this = this;
if (this.errorMessage) {
Object.keys(this.errorMessage).map((/**
* @param {?} x
* @return {?}
*/
function (x) { return _this.defaultErrMsg[x] = _this.errorMessage[x]; }));
}
};
PostalCodeComponent.decorators = [
{ type: Component, args: [{
selector: 'common-postal-code',
template: "<label for=\"{{labelforId}}\" class=\"control-label\">{{label}}</label>\r\n<div *ngIf=\"displayMask; else NoMask\">\r\n<input class=\"form-control\"\r\n spellcheck=\"false\"\r\n id=\"{{labelforId}}\"\r\n [ngModel]=\"postalCode\"\r\n (ngModelChange)=\"onValueChange($event)\"\r\n (blur)=\"onBlurEvent($event)\"\r\n [textMask]=\"{mask: mask, pipe: upperCasePipe}\"\r\n [required]=\"required\"\r\n [disabled]=\"disabled\"\r\n autocomplete=\"off\"/>\r\n </div>\r\n\r\n <!-- Error messages for input -->\r\n <common-error-container\r\n [displayError]=\"controlDir && !disabled && (controlDir.touched || controlDir.dirty) && controlDir.errors\">\r\n <div *ngIf=\"controlDir?.errors?.required\">\r\n {{label}} {{defaultErrMsg.required}}\r\n </div>\r\n <div *ngIf=\"controlDir?.errors?.pattern\">\r\n {{defaultErrMsg.pattern}}\r\n </div>\r\n <div *ngIf=\"controlDir?.errors?.invalidBCPostal\">\r\n {{defaultErrMsg.invalidBCPostal}}\r\n </div>\r\n <div *ngIf=\"controlDir?.errors?.invalidChar\">\r\n {{label}} {{defaultErrMsg.invalidChar}}\r\n </div>\r\n </common-error-container>\r\n\r\n<ng-template #NoMask>\r\n <input class=\"form-control\"\r\n spellcheck=\"false\"\r\n type=\"text\"\r\n id=\"{{labelforId}}\"\r\n [value]=\"postalCode\"\r\n (input)=\"onValueChange($event.target.value)\"\r\n (blur)=\"onBlurEvent($event)\"\r\n [disabled]=\"disabled\"\r\n [attr.maxlength]=\"maxlen\"\r\n autocomplete=\"off\"/>\r\n</ng-template>\r\n",
styles: [""]
}] }
];
/** @nocollapse */
PostalCodeComponent.ctorParameters = function () { return [
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }] }
]; };
PostalCodeComponent.propDecorators = {
label: [{ type: Input }],
displayMask: [{ type: Input }],
maxlen: [{ type: Input }],
labelforId: [{ type: Input }],
disabled: [{ type: Input }],
errorMessage: [{ type: Input }],
required: [{ type: Input }],
value: [{ type: Input }],
valueChange: [{ type: Output }],
blurEvent: [{ type: Output }]
};
return PostalCodeComponent;
}(Base));
export { PostalCodeComponent };
if (false) {
/** @type {?} */
PostalCodeComponent.prototype.label;
/** @type {?} */
PostalCodeComponent.prototype.displayMask;
/** @type {?} */
PostalCodeComponent.prototype.maxlen;
/** @type {?} */
PostalCodeComponent.prototype.labelforId;
/** @type {?} */
PostalCodeComponent.prototype.disabled;
/** @type {?} */
PostalCodeComponent.prototype.errorMessage;
/** @type {?} */
PostalCodeComponent.prototype.required;
/** @type {?} */
PostalCodeComponent.prototype.valueChange;
/** @type {?} */
PostalCodeComponent.prototype.blurEvent;
/** @type {?} */
PostalCodeComponent.prototype.postalCode;
/** @type {?} */
PostalCodeComponent.prototype.mask;
/** @type {?} */
PostalCodeComponent.prototype.defaultErrMsg;
/** @type {?} */
PostalCodeComponent.prototype._onChange;
/** @type {?} */
PostalCodeComponent.prototype._onTouched;
/** @type {?} */
PostalCodeComponent.prototype.controlDir;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdGFsLWNvZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbW9oLWNvbW1vbi1saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9wb3N0YWwtY29kZS9wb3N0YWwtY29kZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUF3QixTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJekM7SUFLeUMsK0NBQUk7SUFvQzNDLDZCQUF3QyxVQUFxQjtRQUE3RCxZQUNFLGlCQUFPLFNBTVI7UUFQdUMsZ0JBQVUsR0FBVixVQUFVLENBQVc7UUFsQ3BELFdBQUssR0FBVyxhQUFhLENBQUM7UUFDOUIsaUJBQVcsR0FBWSxJQUFJLENBQUM7UUFDNUIsWUFBTSxHQUFXLEtBQUssQ0FBQztRQUN2QixnQkFBVSxHQUFXLGFBQWEsR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDO1FBQ25ELGNBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUIsY0FBUSxHQUFZLEtBQUssQ0FBQztRQVl6QixpQkFBVyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQy9ELGVBQVMsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVqRSxnQkFBVSxHQUFXLEVBQUUsQ0FBQztRQUd4QixtQkFBYSxHQUFpQjtZQUM1QixRQUFRLEVBQUUsY0FBYztZQUN4QixXQUFXLEVBQUUsdUVBQXVFO1lBQ3BGLE9BQU8sRUFBRSwrQkFBK0I7WUFDeEMsZUFBZSxFQUFFLDJDQUEyQztTQUM3RCxD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QUFLOzhCQVVMLE1BQU07NEJBQ04sTUFBTTs7SUEwRVQsMEJBQUM7Q0FBQSxBQXBHRCxDQUt5QyxJQUFJLEdBK0Y1QztTQS9GWSxtQkFBbUI7OztJQUU5QixvQ0FBdUM7O0lBQ3ZDLDBDQUFxQzs7SUFDckMscUNBQWdDOztJQUNoQyx5Q0FBNEQ7O0lBQzVELHVDQUFtQzs7SUFDbkMsMkNBQW9DOztJQUNwQyx1Q0FBbUM7O0lBWW5DLDBDQUF5RTs7SUFDekUsd0NBQWlFOztJQUVqRSx5Q0FBd0I7O0lBQ3hCLG1DQUFVOztJQUVWLDRDQUtFOztJQUVGLHdDQUEyQjs7SUFDM0IseUNBQTRCOztJQUVmLHlDQUFnRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPcHRpb25hbCwgU2VsZiwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IExFVFRFUiwgTlVNQkVSLCBTUEFDRSB9IGZyb20gJy4uLy4uL21vZGVscy9tYXNrLmNvbnN0YW50cyc7XHJcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvYmFzZSc7XHJcbmltcG9ydCB7IEVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uL3B1YmxpY19hcGknO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29tbW9uLXBvc3RhbC1jb2RlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcG9zdGFsLWNvZGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Bvc3RhbC1jb2RlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFBvc3RhbENvZGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciAge1xyXG5cclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJ1Bvc3RhbCBDb2RlJztcclxuICBASW5wdXQoKSBkaXNwbGF5TWFzazogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgbWF4bGVuOiBzdHJpbmcgPSAnMjUwJztcclxuICBASW5wdXQoKSBsYWJlbGZvcklkOiBzdHJpbmcgPSAncG9zdGFsQ29kZV8nICsgdGhpcy5vYmplY3RJZDtcclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZTogRXJyb3JNZXNzYWdlO1xyXG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHZhbHVlKCB2YWw6IHN0cmluZyApIHtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgdGhpcy5wb3N0YWxDb2RlID0gdmFsO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgdmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wb3N0YWxDb2RlO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBibHVyRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIHBvc3RhbENvZGU6IHN0cmluZyA9ICcnO1xyXG4gIG1hc2s6IGFueTtcclxuXHJcbiAgZGVmYXVsdEVyck1zZzogRXJyb3JNZXNzYWdlID0ge1xyXG4gICAgcmVxdWlyZWQ6ICdpcyByZXF1aXJlZC4nLFxyXG4gICAgaW52YWxpZENoYXI6ICdtdXN0IGNvbnRhaW4gbGV0dGVycyBhbmQvb3IgbnVtYmVycyBhbmQgbWF5IGluY2x1ZGUgYmxhbmsgY2hhcmFjdGVycy4nLFxyXG4gICAgcGF0dGVybjogJ011c3QgYmUgaW4gdGhlIGZvcm1hdCBBMUEgMUExJyxcclxuICAgIGludmFsaWRCQ1Bvc3RhbDogJ0ludmFsaWQgcG9zdGFsIGNvZGUgZm9yIEJyaXRpc2ggQ29sdW1iaWEuJ1xyXG4gIH07XHJcblxyXG4gIF9vbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xyXG4gIF9vblRvdWNoZWQgPSAoXzogYW55KSA9PiB7fTtcclxuXHJcbiAgY29uc3RydWN0b3IoIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIGNvbnRyb2xEaXI6IE5nQ29udHJvbCApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBpZiAoIGNvbnRyb2xEaXIgKSB7XHJcbiAgICAgIGNvbnRyb2xEaXIudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5tYXNrID0gW0xFVFRFUiwgTlVNQkVSLCBMRVRURVIsIFNQQUNFLCBOVU1CRVIsIExFVFRFUiwgTlVNQkVSXTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRFcnJvck1zZygpO1xyXG4gIH1cclxuXHJcbiAgb25WYWx1ZUNoYW5nZSggdmFsdWU6IGFueSApIHtcclxuXHJcbiAgICBpZiAoIHZhbHVlICE9PSB0aGlzLnBvc3RhbENvZGUgKSB7IC8vIElFIGZpeCB3aGVuIGZvY3VzIGRvZXMgbm90IGRpc3BsYXkgcmVxdWlyZWQgZXJyb3JcclxuICAgICAgdGhpcy5fb25DaGFuZ2UoIHZhbHVlICk7XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCggdmFsdWUgKTtcclxuICAgICAgdGhpcy5wb3N0YWxDb2RlID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkJsdXJFdmVudCggZXZlbnQ6IGFueSApIHtcclxuICAgIHRoaXMuX29uVG91Y2hlZCggZXZlbnQgKTtcclxuICAgIHRoaXMuYmx1ckV2ZW50LmVtaXQoIGV2ZW50ICk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKCB2YWx1ZTogYW55ICk6IHZvaWQge1xyXG4gICAgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkge1xyXG4gICAgICB0aGlzLnBvc3RhbENvZGUgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFJlZ2lzdGVyIGNoYW5nZSBmdW5jdGlvbmdcclxuICByZWdpc3Rlck9uQ2hhbmdlKCBmbjogYW55ICk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIC8vIFJlZ2lzdGVyIHRvdWNoZWQgZnVuY3Rpb25cclxuICByZWdpc3Rlck9uVG91Y2hlZCggZm46IGFueSApOiB2b2lkIHtcclxuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwcGVyIGNhc2VzIGxldHRlcnMgaW4gc3RyaW5nXHJcbiAgICovXHJcbiAgdXBwZXJDYXNlUGlwZSh0ZXh0OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0ZXh0LnRvVXBwZXJDYXNlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEVycm9yTXNnKCkge1xyXG4gICAgaWYgKCB0aGlzLmVycm9yTWVzc2FnZSApIHtcclxuICAgICAgT2JqZWN0LmtleXModGhpcy5lcnJvck1lc3NhZ2UpLm1hcCggeCA9PiB0aGlzLmRlZmF1bHRFcnJNc2dbeF0gPSB0aGlzLmVycm9yTWVzc2FnZVt4XSApO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=