moh-common-lib
Version:
A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).
187 lines • 14.6 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, Optional, Self, Output, EventEmitter } from '@angular/core';
import { NgControl } from '@angular/forms';
import { AbstractFormControl } from '../../models/abstract-form-control';
import { LabelReplacementTag } from '../../models/error-message.interface';
/**
* TODO DOCUMENT NEED TO USE NGMODEL FOR REQUIRED TO WORK. Also test with reactive forms to see if still nec
*/
var NameComponent = /** @class */ (function (_super) {
tslib_1.__extends(NameComponent, _super);
function NameComponent(controlDir) {
var _this = _super.call(this) || this;
_this.controlDir = controlDir;
_this.disabled = false;
_this.label = 'Name';
_this.maxlength = '255';
_this.labelforId = 'name_' + _this.objectId;
_this.required = false;
_this.valueChange = new EventEmitter();
_this.blur = new EventEmitter();
_this.nameStr = '';
_this._defaultErrMsg = {
required: LabelReplacementTag + " is required.",
invalid: LabelReplacementTag + ' must begin with a letter and cannot include special ' +
'characters except hyphens, periods, apostrophes and blank characters.',
invalidChar: LabelReplacementTag + " must be a letter." // for Initials when maxlength is 1
};
if (controlDir) {
controlDir.valueAccessor = _this;
}
return _this;
}
Object.defineProperty(NameComponent.prototype, "value", {
get: /**
* @return {?}
*/
function () {
return this.nameStr;
},
set: /**
* @param {?} val
* @return {?}
*/
function (val) {
if (val) {
this.nameStr = val;
}
},
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
NameComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
_super.prototype.ngOnInit.call(this);
this.registerValidation(this.controlDir, this.validateSelf);
};
/**
* @param {?} value
* @return {?}
*/
NameComponent.prototype.onValueChange = /**
* @param {?} value
* @return {?}
*/
function (value) {
this.nameStr = value;
this._onChange(value);
this.valueChange.emit(value);
};
/**
* @param {?} event
* @return {?}
*/
NameComponent.prototype.onBlur = /**
* @param {?} event
* @return {?}
*/
function (event) {
this._onTouched(event);
this.blur.emit(event.target.value);
};
/**
* @param {?} value
* @return {?}
*/
NameComponent.prototype.writeValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
if (value) {
this.nameStr = value;
}
};
Object.defineProperty(NameComponent.prototype, "maxLenAsNumber", {
get: /**
* @return {?}
*/
function () {
return Number.parseInt(this.maxlength, 10);
},
enumerable: true,
configurable: true
});
/**
* @private
* @return {?}
*/
NameComponent.prototype.validateSelf = /**
* @private
* @return {?}
*/
function () {
/** @type {?} */
var maxlen = Number.parseInt(this.maxlength, 10);
if (this.nameStr) {
if (maxlen > 1) {
// Valid characters for name
/** @type {?} */
var criteria = RegExp('^[a-zA-Z][a-zA-Z\-.\' ]*$');
return criteria.test(this.nameStr) ? null : { 'invalid': true };
}
else {
// Only letters for initials
/** @type {?} */
var letters = RegExp('[a-zA-Z]*$');
return letters.test(this.nameStr) ? null : { 'invalidChar': true };
}
}
return null;
};
NameComponent.decorators = [
{ type: Component, args: [{
selector: 'common-name',
template: "\r\n<label for=\"{{labelforId}}\" class=\"control-label\">{{label}}</label>\r\n<input type=\"text\"\r\n class=\"form-control\"\r\n id=\"{{labelforId}}\"\r\n [value]=\"nameStr\"\r\n (change)=\"onValueChange( $event.target.value )\"\r\n (blur)=\"onBlur( $event )\"\r\n [disabled]=\"disabled\"\r\n [attr.maxlength]=\"maxlength\"\r\n [required]=\"required\"\r\n autocomplete=\"off\" />\r\n<!-- Error messages for component -->\r\n<common-error-container [displayError]=\"controlDir && !disabled && (controlDir.dirty || controlDir.touched) && controlDir?.errors\">\r\n <div *ngIf=\"controlDir?.errors?.required\">\r\n {{_defaultErrMsg.required}}\r\n </div>\r\n <div *ngIf=\"controlDir?.errors?.invalid\">\r\n {{_defaultErrMsg.invalid}}\r\n </div>\r\n <div *ngIf=\"controlDir?.errors?.invalidChar\">\r\n {{_defaultErrMsg.invalidChar}}\r\n </div>\r\n</common-error-container>\r\n",
styles: [".form-group{margin-bottom:1.5rem}"]
}] }
];
/** @nocollapse */
NameComponent.ctorParameters = function () { return [
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }] }
]; };
NameComponent.propDecorators = {
disabled: [{ type: Input }],
label: [{ type: Input }],
maxlength: [{ type: Input }],
labelforId: [{ type: Input }],
required: [{ type: Input }],
value: [{ type: Input }],
valueChange: [{ type: Output }],
blur: [{ type: Output }]
};
return NameComponent;
}(AbstractFormControl));
export { NameComponent };
if (false) {
/** @type {?} */
NameComponent.prototype.disabled;
/** @type {?} */
NameComponent.prototype.label;
/** @type {?} */
NameComponent.prototype.maxlength;
/** @type {?} */
NameComponent.prototype.labelforId;
/** @type {?} */
NameComponent.prototype.required;
/** @type {?} */
NameComponent.prototype.valueChange;
/** @type {?} */
NameComponent.prototype.blur;
/** @type {?} */
NameComponent.prototype.nameStr;
/** @type {?} */
NameComponent.prototype._defaultErrMsg;
/** @type {?} */
NameComponent.prototype.controlDir;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9tb2gtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL25hbWUvbmFtZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLE1BQU0sRUFDTixZQUFZLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFDL0IsT0FBTyxFQUF3QixTQUFTLEVBQW9CLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFnQixNQUFNLHNDQUFzQyxDQUFDOzs7O0FBS3pGO0lBS21DLHlDQUFtQjtJQStCcEQsdUJBQXdDLFVBQXFCO1FBQTdELFlBQ0UsaUJBQU8sU0FJUjtRQUx1QyxnQkFBVSxHQUFWLFVBQVUsQ0FBVztRQTdCcEQsY0FBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixXQUFLLEdBQVcsTUFBTSxDQUFDO1FBQ3ZCLGVBQVMsR0FBVyxLQUFLLENBQUM7UUFDMUIsZ0JBQVUsR0FBVyxPQUFPLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQztRQUM3QyxjQUFRLEdBQVksS0FBSyxDQUFDO1FBWXpCLGlCQUFXLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDL0QsVUFBSSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXJELGFBQU8sR0FBVyxFQUFFLENBQUM7UUFFNUIsb0JBQWMsR0FBaUI7WUFDN0IsUUFBUSxFQUFLLG1CQUFtQixrQkFBZTtZQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEdBQUcsdURBQXVEO2dCQUNwRix1RUFBdUU7WUFDekUsV0FBVyxFQUFLLG1CQUFtQix1QkFBb0IsQ0FBQyxtQ0FBbUM7U0FDNUYsQ0FBQztRQUtBLElBQUssVUFBVSxFQUFHO1lBQ2hC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Q29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPcHRpb25hbCxcclxuICBTZWxmLFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWJzdHJhY3RGb3JtQ29udHJvbCB9IGZyb20gJy4uLy4uL21vZGVscy9hYnN0cmFjdC1mb3JtLWNvbnRyb2wnO1xyXG5pbXBvcnQgeyBMYWJlbFJlcGxhY2VtZW50VGFnLCBFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvZXJyb3ItbWVzc2FnZS5pbnRlcmZhY2UnO1xyXG5cclxuLyoqXHJcbiAqIFRPRE8gRE9DVU1FTlQgTkVFRCBUTyBVU0UgTkdNT0RFTCBGT1IgUkVRVUlSRUQgVE8gV09SSy4gQWxzbyB0ZXN0IHdpdGggcmVhY3RpdmUgZm9ybXMgdG8gc2VlIGlmIHN0aWxsIG5lY1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb21tb24tbmFtZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25hbWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25hbWUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmFtZUNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0Rm9ybUNvbnRyb2wgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJ05hbWUnO1xyXG4gIEBJbnB1dCgpIG1heGxlbmd0aDogc3RyaW5nID0gJzI1NSc7XHJcbiAgQElucHV0KCkgbGFiZWxmb3JJZDogc3RyaW5nID0gJ25hbWVfJyArIHRoaXMub2JqZWN0SWQ7XHJcbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgdmFsdWUoIHZhbDogc3RyaW5nICkge1xyXG4gICAgaWYgKCB2YWwgKSB7XHJcbiAgICAgIHRoaXMubmFtZVN0ciA9IHZhbDtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubmFtZVN0cjtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgYmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgcHVibGljIG5hbWVTdHI6IHN0cmluZyA9ICcnO1xyXG5cclxuICBfZGVmYXVsdEVyck1zZzogRXJyb3JNZXNzYWdlID0ge1xyXG4gICAgcmVxdWlyZWQ6IGAke0xhYmVsUmVwbGFjZW1lbnRUYWd9IGlzIHJlcXVpcmVkLmAsXHJcbiAgICBpbnZhbGlkOiBMYWJlbFJlcGxhY2VtZW50VGFnICsgJyBtdXN0IGJlZ2luIHdpdGggYSBsZXR0ZXIgYW5kIGNhbm5vdCBpbmNsdWRlIHNwZWNpYWwgJyArXHJcbiAgICAgICdjaGFyYWN0ZXJzIGV4Y2VwdCBoeXBoZW5zLCBwZXJpb2RzLCBhcG9zdHJvcGhlcyBhbmQgYmxhbmsgY2hhcmFjdGVycy4nLFxyXG4gICAgaW52YWxpZENoYXI6IGAke0xhYmVsUmVwbGFjZW1lbnRUYWd9IG11c3QgYmUgYSBsZXR0ZXIuYCAvLyBmb3IgSW5pdGlhbHMgd2hlbiBtYXhsZW5ndGggaXMgMVxyXG4gIH07XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvciggQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgY29udHJvbERpcjogTmdDb250cm9sICkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIGlmICggY29udHJvbERpciApIHtcclxuICAgICAgY29udHJvbERpci52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuXHJcbiAgICB0aGlzLnJlZ2lzdGVyVmFsaWRhdGlvbiggdGhpcy5jb250cm9sRGlyLCB0aGlzLnZhbGlkYXRlU2VsZiApO1xyXG4gIH1cclxuXHJcbiAgb25WYWx1ZUNoYW5nZSggdmFsdWU6IGFueSApIHtcclxuICAgIHRoaXMubmFtZVN0ciA9IHZhbHVlO1xyXG4gICAgdGhpcy5fb25DaGFuZ2UoIHZhbHVlICk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoIHZhbHVlICk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoIGV2ZW50OiBhbnkgKSB7XHJcbiAgICB0aGlzLl9vblRvdWNoZWQoIGV2ZW50ICk7XHJcbiAgICB0aGlzLmJsdXIuZW1pdCggZXZlbnQudGFyZ2V0LnZhbHVlICk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKCB2YWx1ZTogYW55ICk6IHZvaWQge1xyXG4gICAgaWYgKCB2YWx1ZSApIHtcclxuICAgICAgdGhpcy5uYW1lU3RyID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgbWF4TGVuQXNOdW1iZXIoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBOdW1iZXIucGFyc2VJbnQoIHRoaXMubWF4bGVuZ3RoLCAxMCApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZVNlbGYoKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG5cclxuICAgIGNvbnN0IG1heGxlbiA9IE51bWJlci5wYXJzZUludCggdGhpcy5tYXhsZW5ndGgsIDEwICk7XHJcbiAgICBpZiAoIHRoaXMubmFtZVN0ciApIHtcclxuICAgICAgaWYgKCBtYXhsZW4gPiAxICkge1xyXG4gICAgICAgIC8vIFZhbGlkIGNoYXJhY3RlcnMgZm9yIG5hbWVcclxuICAgICAgICBjb25zdCBjcml0ZXJpYTogUmVnRXhwID0gUmVnRXhwKCAnXlthLXpBLVpdW2EtekEtWlxcLS5cXCcgXSokJyApO1xyXG4gICAgICAgIHJldHVybiBjcml0ZXJpYS50ZXN0KCB0aGlzLm5hbWVTdHIgKSA/IG51bGwgOiB7ICdpbnZhbGlkJzogdHJ1ZSB9O1xyXG4gICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAvLyBPbmx5IGxldHRlcnMgZm9yIGluaXRpYWxzXHJcbiAgICAgICAgY29uc3QgbGV0dGVyczogUmVnRXhwID0gUmVnRXhwKCAnW2EtekEtWl0qJCcgKTtcclxuICAgICAgICByZXR1cm4gbGV0dGVycy50ZXN0KCB0aGlzLm5hbWVTdHIgKSA/IG51bGwgOiB7ICdpbnZhbGlkQ2hhcic6IHRydWUgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgIH1cclxuXHJcbn1cclxuIl19