moh-common-lib
Version:
A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).
198 lines • 17.8 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 { CANADA } from '../country/country.component';
import { AbstractFormControl } from '../../models/abstract-form-control';
import { LabelReplacementTag } from '../../models/error-message.interface';
/** @type {?} */
export var BRITISH_COLUMBIA = 'BC';
/**
* @record
*/
export function ProvinceList() { }
if (false) {
/** @type {?} */
ProvinceList.prototype.provinceCode;
/** @type {?} */
ProvinceList.prototype.description;
/** @type {?} */
ProvinceList.prototype.country;
}
/** @type {?} */
export var PROVINCE_LIST = [
{ provinceCode: 'AB', description: 'Alberta', country: CANADA },
{ provinceCode: 'BC', description: 'British Columbia', country: CANADA },
{ provinceCode: 'MB', description: 'Manitoba', country: CANADA },
{ provinceCode: 'NB', description: 'New Brunswick', country: CANADA },
{ provinceCode: 'NL', description: 'Newfoundland and Labrador', country: CANADA },
{ provinceCode: 'NS', description: 'Nova Scotia', country: CANADA },
{ provinceCode: 'ON', description: 'Ontario', country: CANADA },
{ provinceCode: 'PE', description: 'Prince Edward Island', country: CANADA },
{ provinceCode: 'QC', description: 'Quebec', country: CANADA },
{ provinceCode: 'SK', description: 'Saskatchewan', country: CANADA },
{ provinceCode: 'NT', description: 'Northwest Territories', country: CANADA },
{ provinceCode: 'NU', description: 'Nunavut', country: CANADA },
{ provinceCode: 'YT', description: 'Yukon', country: CANADA }
];
/**
* @param {?} provinceCode
* @return {?}
*/
export function getProvinceDescription(provinceCode) {
/** @type {?} */
var provObj = PROVINCE_LIST.find((/**
* @param {?} val
* @return {?}
*/
function (val) { return provinceCode === val.provinceCode && CANADA === val.country; }));
return provObj ? provObj.description : provinceCode;
}
var ProvinceComponent = /** @class */ (function (_super) {
tslib_1.__extends(ProvinceComponent, _super);
function ProvinceComponent(controlDir) {
var _this = _super.call(this) || this;
_this.controlDir = controlDir;
_this.label = 'Province';
_this.provinceList = PROVINCE_LIST;
_this.labelforId = 'province_' + _this.objectId;
_this.required = false;
_this.placeholder = 'Please select a province';
_this.maxlength = '250';
_this.useDropDownList = true;
_this.valueChange = new EventEmitter();
_this.blur = new EventEmitter();
_this._defaultErrMsg = {
required: LabelReplacementTag + ' is required.',
invalidChar: LabelReplacementTag + ' must contain letters and may include special characters such as hyphens, ' +
'periods, apostrophes and blank characters.'
};
if (controlDir) {
controlDir.valueAccessor = _this;
}
return _this;
}
Object.defineProperty(ProvinceComponent.prototype, "value", {
get: /**
* @return {?}
*/
function () {
return this.province;
},
set: /**
* @param {?} val
* @return {?}
*/
function (val) {
if (val) {
this.province = val;
}
},
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
ProvinceComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
_super.prototype.ngOnInit.call(this);
};
/**
* @param {?} value
* @return {?}
*/
ProvinceComponent.prototype.onValueChange = /**
* @param {?} value
* @return {?}
*/
function (value) {
if (value !== this.province) {
this._onChange(value);
this.valueChange.emit(value);
this.province = value;
}
};
/**
* @param {?} event
* @return {?}
*/
ProvinceComponent.prototype.onBlur = /**
* @param {?} event
* @return {?}
*/
function (event) {
this._onTouched(event);
this.blur.emit(event);
};
/**
* @param {?} value
* @return {?}
*/
ProvinceComponent.prototype.writeValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
if (value !== undefined) {
this.province = value;
}
};
ProvinceComponent.decorators = [
{ type: Component, args: [{
selector: 'common-province',
template: "<label for=\"{{labelforId}}\" class=\"control-label\">{{label}}</label>\r\n\r\n<div *ngIf=\"useDropDownList; else NotDropDownList\">\r\n <ng-select [items]=\"provinceList\"\r\n [ngModel]=\"province\"\r\n (ngModelChange)=\"onValueChange($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [required]=\"required\"\r\n [disabled]=\"disabled\"\r\n labelForId=\"{{labelforId}}\"\r\n bindValue=\"provinceCode\"\r\n bindLabel=\"description\"\r\n [clearable]=\"!required\"\r\n placeholder=\"{{ placeholder }}\"></ng-select>\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 {{_defaultErrMsg.required}}\r\n </div>\r\n <div *ngIf=\"controlDir?.errors?.invalidChar\">\r\n {{_defaultErrMsg.invalidChar}}\r\n </div>\r\n</common-error-container>\r\n\r\n<ng-template #NotDropDownList>\r\n <input class=\"form-control\"\r\n spellcheck=\"false\"\r\n type=\"text\"\r\n id=\"{{labelforId}}\"\r\n [value]=\"province\"\r\n (change)=\"onValueChange($event.target.value)\"\r\n (blur)=\"onBlur($event)\"\r\n [disabled]=\"disabled\"\r\n [attr.maxlength]=\"maxlength\"\r\n [placeholder]=\"placeholder\"\r\n autocomplete=\"off\"/>\r\n</ng-template>\r\n",
styles: [""]
}] }
];
/** @nocollapse */
ProvinceComponent.ctorParameters = function () { return [
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }] }
]; };
ProvinceComponent.propDecorators = {
label: [{ type: Input }],
provinceList: [{ type: Input }],
labelforId: [{ type: Input }],
required: [{ type: Input }],
placeholder: [{ type: Input }],
maxlength: [{ type: Input }],
useDropDownList: [{ type: Input }],
value: [{ type: Input }],
valueChange: [{ type: Output }],
blur: [{ type: Output }]
};
return ProvinceComponent;
}(AbstractFormControl));
export { ProvinceComponent };
if (false) {
/** @type {?} */
ProvinceComponent.prototype.label;
/** @type {?} */
ProvinceComponent.prototype.provinceList;
/** @type {?} */
ProvinceComponent.prototype.labelforId;
/** @type {?} */
ProvinceComponent.prototype.required;
/** @type {?} */
ProvinceComponent.prototype.placeholder;
/** @type {?} */
ProvinceComponent.prototype.maxlength;
/** @type {?} */
ProvinceComponent.prototype.useDropDownList;
/** @type {?} */
ProvinceComponent.prototype.valueChange;
/** @type {?} */
ProvinceComponent.prototype.blur;
/** @type {?} */
ProvinceComponent.prototype.province;
/** @type {?} */
ProvinceComponent.prototype._defaultErrMsg;
/** @type {?} */
ProvinceComponent.prototype.controlDir;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmluY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbW9oLWNvbW1vbi1saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9wcm92aW5jZS9wcm92aW5jZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQWdCLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7O0FBRXpGLE1BQU0sS0FBTyxnQkFBZ0IsR0FBRyxJQUFJOzs7O0FBQ3BDLGtDQUlDOzs7SUFIQyxvQ0FBcUI7O0lBQ3JCLG1DQUFvQjs7SUFDcEIsK0JBQWdCOzs7QUFHbEIsTUFBTSxLQUFPLGFBQWEsR0FBbUI7SUFDM0MsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMvRCxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDeEUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUNoRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQ3JFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsT0FBTyxF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LENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztTQUN2QjtJQUNILENBQUM7Ozs7O0lBRUQsa0NBQU07Ozs7SUFBTixVQUFRLEtBQVU7UUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBRSxLQUFLLENBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBRSxLQUFLLENBQUUsQ0FBQztJQUMxQixDQUFDOzs7OztJQUVELHNDQUFVOzs7O0lBQVYsVUFBWSxLQUFVO1FBQ3BCLElBQUssS0FBSyxLQUFLLFNBQVMsRUFBRztZQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztTQUN2QjtJQUNILENBQUM7O2dCQWhFRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsMGdEQUF3Qzs7aUJBRXpDOzs7O2dCQXJDUSxTQUFTLHVCQXFFRixRQUFRLFlBQUksSUFBSTs7O3dCQTdCN0IsS0FBSzsrQkFDTCxLQUFLOzZCQUNMLEtBQUs7MkJBQ0wsS0FBSzs4QkFDTCxLQUFLOzRCQUNMLEtBQUs7a0NBQ0wsS0FBSzt3QkFDTCxLQUFLOzhCQVVMLE1BQU07dUJBQ04sTUFBTTs7SUF3Q1Qsd0JBQUM7Q0FBQSxBQWpFRCxDQUt1QyxtQkFBbUIsR0E0RHpEO1NBNURZLGlCQUFpQjs7O0lBRTVCLGtDQUFvQzs7SUFDcEMseUNBQXNEOztJQUN0RCx1Q0FBMEQ7O0lBQzFELHFDQUFtQzs7SUFDbkMsd0NBQTBEOztJQUMxRCxzQ0FBbUM7O0lBQ25DLDRDQUF5Qzs7SUFXekMsd0NBQXlFOztJQUN6RSxpQ0FBNEQ7O0lBRTVELHFDQUFpQjs7SUFFakIsMkNBSUU7O0lBR1csdUNBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9wdGlvbmFsLCBTZWxmLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDQU5BREEgfSBmcm9tICcuLi9jb3VudHJ5L2NvdW50cnkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWJzdHJhY3RGb3JtQ29udHJvbCB9IGZyb20gJy4uLy4uL21vZGVscy9hYnN0cmFjdC1mb3JtLWNvbnRyb2wnO1xyXG5pbXBvcnQgeyBFcnJvck1lc3NhZ2UsIExhYmVsUmVwbGFjZW1lbnRUYWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvZXJyb3ItbWVzc2FnZS5pbnRlcmZhY2UnO1xyXG5cclxuZXhwb3J0IGNvbnN0IEJSSVRJU0hfQ09MVU1CSUEgPSAnQkMnO1xyXG5leHBvcnQgaW50ZXJmYWNlIFByb3ZpbmNlTGlzdCB7XHJcbiAgcHJvdmluY2VDb2RlOiBzdHJpbmc7XHJcbiAgZGVzY3JpcHRpb246IHN0cmluZztcclxuICBjb3VudHJ5OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBQUk9WSU5DRV9MSVNUOiBQcm92aW5jZUxpc3RbXSA9IFtcclxuICB7IHByb3ZpbmNlQ29kZTogJ0FCJywgZGVzY3JpcHRpb246ICdBbGJlcnRhJywgY291bnRyeTogQ0FOQURBIH0sXHJcbiAgeyBwcm92aW5jZUNvZGU6ICdCQycsIGRlc2NyaXB0aW9uOiAnQnJpdGlzaCBDb2x1bWJpYScsIGNvdW50cnk6IENBTkFEQSB9LFxyXG4gIHsgcHJvdmluY2VDb2RlOiAnTUInLCBkZXNjcmlwdGlvbjogJ01hbml0b2JhJywgY291bnRyeTogQ0FOQURBIH0sXHJcbiAgeyBwcm92aW5jZUNvZGU6ICdOQicsIGRlc2NyaXB0aW9uOiAnTmV3IEJydW5zd2ljaycsIGNvdW50cnk6IENBTkFEQSB9LFxyXG4gIHsgcHJvdmluY2VDb2RlOiAnTkwnLCBkZXNjcmlwdGlvbjogJ05ld2ZvdW5kbGFuZCBhbmQgTGFicmFkb3InLCBjb3VudHJ5OiBDQU5BREEgfSxcclxuICB7IHByb3ZpbmNlQ29kZTogJ05TJywgZGVzY3JpcHRpb246ICdOb3ZhIFNjb3RpYScsIGNvdW50cnk6IENBTkFEQSB9LFxyXG4gIHsgcHJvdmluY2VDb2RlOiAnT04nLCBkZXNjcmlwdGlvbjogJ09udGFyaW8nLCBjb3VudHJ5OiBDQU5BREEgfSxcclxuICB7IHByb3ZpbmNlQ29kZTogJ1BFJywgZGVzY3JpcHRpb246ICdQcmluY2UgRWR3YXJkIElzbGFuZCcsIGNvdW50cnk6IENBTkFEQSB9LFxyXG4gIHsgcHJvdmluY2VDb2RlOiAnUUMnLCBkZXNjcmlwdGlvbjogJ1F1ZWJlYycsIGNvdW50cnk6IENBTkFEQSB9LFxyXG4gIHsgcHJvdmluY2VDb2RlOiAnU0snLCBkZXNjcmlwdGlvbjogJ1Nhc2thdGNoZXdhbicsIGNvdW50cnk6IENBTkFEQSB9LFxyXG4gIHsgcHJvdmluY2VDb2RlOiAnTlQnLCBkZXNjcmlwdGlvbjogJ05vcnRod2VzdCBUZXJyaXRvcmllcycsIGNvdW50cnk6IENBTkFEQSB9LFxyXG4gIHsgcHJvdmluY2VDb2RlOiAnTlUnLCBkZXNjcmlwdGlvbjogJ051bmF2dXQnLCBjb3VudHJ5OiBDQU5BREEgfSxcclxuICB7IHByb3ZpbmNlQ29kZTogJ1lUJywgZGVzY3JpcHRpb246ICdZdWtvbicsIGNvdW50cnk6IENBTkFEQSB9XHJcbl07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvdmluY2VEZXNjcmlwdGlvbiggcHJvdmluY2VDb2RlOiBzdHJpbmcgKSB7XHJcbiAgY29uc3QgcHJvdk9iaiA9IFBST1ZJTkNFX0xJU1QuZmluZCggdmFsID0+IHByb3ZpbmNlQ29kZSA9PT0gdmFsLnByb3ZpbmNlQ29kZSAmJiBDQU5BREEgPT09IHZhbC5jb3VudHJ5ICk7XHJcbiAgcmV0dXJuIHByb3ZPYmogPyBwcm92T2JqLmRlc2NyaXB0aW9uIDogcHJvdmluY2VDb2RlO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvbW1vbi1wcm92aW5jZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb3ZpbmNlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm92aW5jZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm92aW5jZUNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0Rm9ybUNvbnRyb2wgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJ1Byb3ZpbmNlJztcclxuICBASW5wdXQoKSBwcm92aW5jZUxpc3Q6IFByb3ZpbmNlTGlzdFtdID0gUFJPVklOQ0VfTElTVDtcclxuICBASW5wdXQoKSBsYWJlbGZvcklkOiBzdHJpbmcgPSAncHJvdmluY2VfJyArIHRoaXMub2JqZWN0SWQ7XHJcbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ1BsZWFzZSBzZWxlY3QgYSBwcm92aW5jZSc7XHJcbiAgQElucHV0KCkgbWF4bGVuZ3RoOiBzdHJpbmcgPSAnMjUwJztcclxuICBASW5wdXQoKSB1c2VEcm9wRG93bkxpc3Q6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHZhbHVlKCB2YWw6IHN0cmluZyApIHtcclxuICAgIGlmICggdmFsICkge1xyXG4gICAgICB0aGlzLnByb3ZpbmNlID0gdmFsO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgdmFsdWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm92aW5jZTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgYmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgcHJvdmluY2U6IHN0cmluZztcclxuXHJcbiAgX2RlZmF1bHRFcnJNc2c6IEVycm9yTWVzc2FnZSA9IHtcclxuICAgIHJlcXVpcmVkOiBMYWJlbFJlcGxhY2VtZW50VGFnICsgJyBpcyByZXF1aXJlZC4nLFxyXG4gICAgaW52YWxpZENoYXI6IExhYmVsUmVwbGFjZW1lbnRUYWcgKyAnIG11c3QgY29udGFpbiBsZXR0ZXJzIGFuZCBtYXkgaW5jbHVkZSBzcGVjaWFsIGNoYXJhY3RlcnMgc3VjaCBhcyBoeXBoZW5zLCAnICtcclxuICAgICAgICAgICAgICAgICAncGVyaW9kcywgYXBvc3Ryb3BoZXMgYW5kIGJsYW5rIGNoYXJhY3RlcnMuJ1xyXG4gIH07XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvciggQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgY29udHJvbERpcjogTmdDb250cm9sICkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIGlmICggY29udHJvbERpciApIHtcclxuICAgICAgY29udHJvbERpci52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICB9XHJcblxyXG4gIG9uVmFsdWVDaGFuZ2UoIHZhbHVlOiBhbnkgKSB7XHJcbiAgICBpZiAoIHZhbHVlICE9PSB0aGlzLnByb3ZpbmNlICkge1xyXG4gICAgICB0aGlzLl9vbkNoYW5nZSggdmFsdWUgKTtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KCB2YWx1ZSApO1xyXG4gICAgICB0aGlzLnByb3ZpbmNlID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoIGV2ZW50OiBhbnkgKSB7XHJcbiAgICB0aGlzLl9vblRvdWNoZWQoIGV2ZW50ICk7XHJcbiAgICB0aGlzLmJsdXIuZW1pdCggZXZlbnQgKTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUoIHZhbHVlOiBhbnkgKTogdm9pZCB7XHJcbiAgICBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XHJcbiAgICAgIHRoaXMucHJvdmluY2UgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19