moh-common-lib
Version:
A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).
201 lines • 13.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { replaceLabelTag } from './error-message.interface';
import { Input } from '@angular/core';
import { Base } from './base';
import { MoHCommonLibraryError } from '../../helpers/library-error';
// Class does not get exported - used internally
/**
* @abstract
*/
var AbstractFormControl = /** @class */ (function (_super) {
tslib_1.__extends(AbstractFormControl, _super);
function AbstractFormControl() {
var _this = _super !== null && _super.apply(this, arguments) || this;
// Default messages - must be defined in each component
_this._defaultErrMsg = {};
_this.disabled = false;
// Required for implementing ControlValueAccessor
_this._onChange = (/**
* @param {?} _
* @return {?}
*/
function (_) { });
_this._onTouched = (/**
* @param {?=} _
* @return {?}
*/
function (_) { });
return _this;
}
/**
* @return {?}
*/
AbstractFormControl.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.setErrorMsg();
};
// Register change function
// Register change function
/**
* @param {?} fn
* @return {?}
*/
AbstractFormControl.prototype.registerOnChange =
// Register change function
/**
* @param {?} fn
* @return {?}
*/
function (fn) {
this._onChange = fn;
};
// Register touched function
// Register touched function
/**
* @param {?} fn
* @return {?}
*/
AbstractFormControl.prototype.registerOnTouched =
// Register touched function
/**
* @param {?} fn
* @return {?}
*/
function (fn) {
this._onTouched = fn;
};
// Disable control
// Disable control
/**
* @param {?} isDisabled
* @return {?}
*/
AbstractFormControl.prototype.setDisabledState =
// Disable control
/**
* @param {?} isDisabled
* @return {?}
*/
function (isDisabled) {
this.disabled = isDisabled;
};
/**
* @protected
* @return {?}
*/
AbstractFormControl.prototype.setErrorMsg = /**
* @protected
* @return {?}
*/
function () {
var _this = this;
this.validateLabel();
// Some components have logic based off no label being submitted - strip off '(optional)'
/** @type {?} */
var _label = this.label ? this.label.replace(/\s*\(.*?\)\s*/g, '') : 'Field';
if (this.errorMessage) {
Object.keys(this.errorMessage).map((/**
* @param {?} x
* @return {?}
*/
function (x) { return _this._defaultErrMsg[x] = _this.errorMessage[x]; }));
}
// Replace label tags with label
Object.keys(this._defaultErrMsg).map((/**
* @param {?} x
* @return {?}
*/
function (x) { return _this._defaultErrMsg[x] = replaceLabelTag(_this._defaultErrMsg[x], _label); }));
};
/**
* Register self validating method
* @param control control directive
* @param fn function for validating self
*/
/**
* Register self validating method
* @protected
* @param {?} ngControl
* @param {?} fn function for validating self
* @return {?}
*/
AbstractFormControl.prototype.registerValidation = /**
* Register self validating method
* @protected
* @param {?} ngControl
* @param {?} fn function for validating self
* @return {?}
*/
function (ngControl, fn) {
// Register validateSelf validator so that it will be added on component initialization.
// Makes the component a self validating component.
var _this = this;
return Promise.resolve().then((/**
* @return {?}
*/
function () {
if (ngControl) {
/** @type {?} */
var allValidators = [fn.bind(_this)];
if (ngControl.control.validator) {
allValidators.push(ngControl.control.validator);
}
ngControl.control.setValidators(allValidators);
ngControl.control.updateValueAndValidity();
return ngControl;
}
}));
};
/**
* @private
* @return {?}
*/
AbstractFormControl.prototype.validateLabel = /**
* @private
* @return {?}
*/
function () {
/** @type {?} */
var labelType = typeof this.label;
// If labelType is falsy, do not throw the error, since we have a backup label in case it's falsy.
if (labelType !== 'string' && this.label) {
/** @type {?} */
var typeMsg = "<AbstractFormControl> Invalid input provided to [label]. Label must be a string and you provided a " + labelType;
throw new MoHCommonLibraryError(typeMsg);
}
};
AbstractFormControl.propDecorators = {
label: [{ type: Input }],
disabled: [{ type: Input }],
errorMessage: [{ type: Input }]
};
return AbstractFormControl;
}(Base));
export { AbstractFormControl };
if (false) {
/** @type {?} */
AbstractFormControl.prototype._defaultErrMsg;
/** @type {?} */
AbstractFormControl.prototype.label;
/** @type {?} */
AbstractFormControl.prototype.disabled;
/** @type {?} */
AbstractFormControl.prototype.errorMessage;
/** @type {?} */
AbstractFormControl.prototype._onChange;
/** @type {?} */
AbstractFormControl.prototype._onTouched;
/**
* @abstract
* @param {?} value
* @return {?}
*/
AbstractFormControl.prototype.writeValue = function (value) { };
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS1jb250cm9sLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbW9oLWNvbW1vbi1saWIvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzL2Fic3RyYWN0LWZvcm0tY29udHJvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUUsT0FBTyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTlCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7OztBQUdwRTtJQUFrRCwrQ0FBSTtJQUF0RDtRQUFBLHFFQXdGQzs7UUFyRlUsb0JBQWMsR0FBaUIsRUFBRSxDQUFDO1FBS2xDLGNBQVEsR0FBWSxLQUFLLENBQUM7O1FBT25DLGVBQVM7Ozs7UUFBRyxVQUFDLENBQU0sSUFBTSxDQUFDLEVBQUM7UUFDM0IsZ0JBQVU7Ozs7UUFBRyxVQUFDLENBQU8sSUFBTSxDQUFDLEVBQUM7O0lBd0UvQixDQUFDOzs7O0lBckVDLHNDQUFROzs7SUFBUjtRQUNFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBS0QsMkJBQTJCOzs7Ozs7SUFDM0IsOENBQWdCOzs7Ozs7SUFBaEIsVUFBa0IsRUFBTztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsNEJBQTRCOzs7Ozs7SUFDNUIsK0NBQWlCOzs7Ozs7SUFBakIsVUFBbUIsRUFBTztRQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsa0JBQWtCOzs7Ozs7SUFDbEIsOENBQWdCOzs7Ozs7SUFBaEIsVUFBa0IsVUFBbUI7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDN0IsQ0FBQzs7Ozs7SUFFUyx5Q0FBVzs7OztJQUFyQjtRQUFBLGlCQVlDO1FBWEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDOzs7WUFHZixNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUUsZ0JBQWdCLEVBQUUsRUFBRSxDQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU87UUFFaEYsSUFBSyxJQUFJLENBQUMsWUFBWSxFQUFHO1lBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUc7Ozs7WUFBRSxVQUFBLENBQUMsSUFBSSxPQUFBLEtBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBN0MsQ0FBNkMsRUFBRSxDQUFDO1NBQzFGO1FBRUQsZ0NBQWdDO1FBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEdBQUc7Ozs7UUFBRSxVQUFBLENBQUMsSUFBSSxPQUFBLEtBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsZUFBZSxDQUFFLEtBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUcsTUFBTSxDQUFFLEVBQTNFLENBQTJFLEVBQUUsQ0FBQztJQUMzSCxDQUFDO0lBRUQ7Ozs7T0FJRzs7Ozs7Ozs7SUFDTyxnREFBa0I7Ozs7Ozs7SUFBNUIsVUFBOEIsU0FBb0IsRUFBRSxFQUFvQjtRQUV0RSx3RkFBd0Y7UUFDeEYsbURBQW1EO1FBSHJELGlCQWtCQztRQWJDLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUk7OztRQUFDO1lBRTVCLElBQUssU0FBUyxFQUFHOztvQkFFVCxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxDQUFDO2dCQUNyQyxJQUFLLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFHO29CQUNqQyxhQUFhLENBQUMsSUFBSSxDQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFFLENBQUM7aUJBQ25EO2dCQUNELFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUMvQyxTQUFTLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQzNDLE9BQU8sU0FBUyxDQUFDO2FBQ2xCO1FBQ0gsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7OztJQUVPLDJDQUFhOzs7O0lBQXJCOztZQUNRLFNBQVMsR0FBRyxPQUFPLElBQUksQ0FBQyxLQUFLO1FBQ25DLGtHQUFrRztRQUNsRyxJQUFJLFNBQVMsS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTs7Z0JBQ2xDLE9BQU8sR0FBRyx5R0FBdUcsU0FBVztZQUNsSSxNQUFNLElBQUkscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUM7SUFDSCxDQUFDOzt3QkFqRkEsS0FBSzsyQkFFTCxLQUFLOytCQUdMLEtBQUs7O0lBNkVSLDBCQUFDO0NBQUEsQUF4RkQsQ0FBa0QsSUFBSSxHQXdGckQ7U0F4RnFCLG1CQUFtQjs7O0lBR3ZDLDZDQUEyQzs7SUFHM0Msb0NBQWdDOztJQUVoQyx1Q0FBbUM7O0lBR25DLDJDQUFvQzs7SUFJcEMsd0NBQTJCOztJQUMzQix5Q0FBNkI7Ozs7OztJQVE3QixnRUFBd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFcnJvck1lc3NhZ2UsIHJlcGxhY2VMYWJlbFRhZyB9IGZyb20gJy4vZXJyb3ItbWVzc2FnZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJhc2UgfSBmcm9tICcuL2Jhc2UnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNb0hDb21tb25MaWJyYXJ5RXJyb3IgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2xpYnJhcnktZXJyb3InO1xyXG5cclxuLy8gQ2xhc3MgZG9lcyBub3QgZ2V0IGV4cG9ydGVkIC0gdXNlZCBpbnRlcm5hbGx5XHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEZvcm1Db250cm9sIGV4dGVuZHMgQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICAvLyBEZWZhdWx0IG1lc3NhZ2VzIC0gbXVzdCBiZSBkZWZpbmVkIGluIGVhY2ggY29tcG9uZW50XHJcbiAgYWJzdHJhY3QgX2RlZmF1bHRFcnJNc2c6IEVycm9yTWVzc2FnZSA9IHt9O1xyXG5cclxuICAvLyBNdXN0IGJlIGRlZmluZWQgaW4gY29tcG9uZW50IGFzIGRlZmF1bHQgbGFiZWxzIGFyZSBzcGVjaWZpYyB0byBjb21wb25lbnRcclxuICBASW5wdXQoKSBhYnN0cmFjdCBsYWJlbDogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyBJbnB1dCB0byBhbGxvdyBkZXZlbG9wZXJzIHRvIGNoYW5nZSBkZWZhdWx0IG1lc3NhZ2VzXHJcbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlOiBFcnJvck1lc3NhZ2U7XHJcblxyXG5cclxuICAvLyBSZXF1aXJlZCBmb3IgaW1wbGVtZW50aW5nIENvbnRyb2xWYWx1ZUFjY2Vzc29yXHJcbiAgX29uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XHJcbiAgX29uVG91Y2hlZCA9IChfPzogYW55KSA9PiB7fTtcclxuXHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRFcnJvck1zZygpO1xyXG4gIH1cclxuXHJcbiAgLy8gUmVxdWlyZWQgZm9yIGltcGxlbWVudGluZyBDb250cm9sVmFsdWVBY2Nlc3NvclxyXG4gIGFic3RyYWN0IHdyaXRlVmFsdWUoIHZhbHVlOiBhbnkgKTogdm9pZDtcclxuXHJcbiAgLy8gUmVnaXN0ZXIgY2hhbmdlIGZ1bmN0aW9uXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZSggZm46IGFueSApOiB2b2lkIHtcclxuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICAvLyBSZWdpc3RlciB0b3VjaGVkIGZ1bmN0aW9uXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoIGZuOiBhbnkgKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIC8vIERpc2FibGUgY29udHJvbFxyXG4gIHNldERpc2FibGVkU3RhdGUoIGlzRGlzYWJsZWQ6IGJvb2xlYW4gKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBzZXRFcnJvck1zZygpIHtcclxuICAgIHRoaXMudmFsaWRhdGVMYWJlbCgpO1xyXG5cclxuICAgIC8vIFNvbWUgY29tcG9uZW50cyBoYXZlIGxvZ2ljIGJhc2VkIG9mZiBubyBsYWJlbCBiZWluZyBzdWJtaXR0ZWQgLSBzdHJpcCBvZmYgJyhvcHRpb25hbCknXHJcbiAgICBjb25zdCBfbGFiZWwgPSB0aGlzLmxhYmVsID8gdGhpcy5sYWJlbC5yZXBsYWNlKCAvXFxzKlxcKC4qP1xcKVxccyovZywgJycgKSA6ICdGaWVsZCc7XHJcblxyXG4gICAgaWYgKCB0aGlzLmVycm9yTWVzc2FnZSApIHtcclxuICAgICAgT2JqZWN0LmtleXModGhpcy5lcnJvck1lc3NhZ2UpLm1hcCggeCA9PiB0aGlzLl9kZWZhdWx0RXJyTXNnW3hdID0gdGhpcy5lcnJvck1lc3NhZ2VbeF0gKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXBsYWNlIGxhYmVsIHRhZ3Mgd2l0aCBsYWJlbFxyXG4gICAgT2JqZWN0LmtleXModGhpcy5fZGVmYXVsdEVyck1zZykubWFwKCB4ID0+IHRoaXMuX2RlZmF1bHRFcnJNc2dbeF0gPSByZXBsYWNlTGFiZWxUYWcoIHRoaXMuX2RlZmF1bHRFcnJNc2dbeF0gLCBfbGFiZWwgKSApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXIgc2VsZiB2YWxpZGF0aW5nIG1ldGhvZFxyXG4gICAqIEBwYXJhbSBjb250cm9sIGNvbnRyb2wgZGlyZWN0aXZlXHJcbiAgICogQHBhcmFtIGZuIGZ1bmN0aW9uIGZvciB2YWxpZGF0aW5nIHNlbGZcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgcmVnaXN0ZXJWYWxpZGF0aW9uKCBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgZm46IFZhbGlkYXRpb25FcnJvcnMpIHtcclxuXHJcbiAgICAvLyBSZWdpc3RlciB2YWxpZGF0ZVNlbGYgdmFsaWRhdG9yIHNvIHRoYXQgaXQgd2lsbCBiZSBhZGRlZCBvbiBjb21wb25lbnQgaW5pdGlhbGl6YXRpb24uXHJcbiAgICAvLyBNYWtlcyB0aGUgY29tcG9uZW50IGEgc2VsZiB2YWxpZGF0aW5nIGNvbXBvbmVudC5cclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XHJcblxyXG4gICAgICBpZiAoIG5nQ29udHJvbCApIHtcclxuXHJcbiAgICAgICAgY29uc3QgYWxsVmFsaWRhdG9ycyA9IFtmbi5iaW5kKHRoaXMpXTtcclxuICAgICAgICBpZiAoIG5nQ29udHJvbC5jb250cm9sLnZhbGlkYXRvciApIHtcclxuICAgICAgICAgIGFsbFZhbGlkYXRvcnMucHVzaCggbmdDb250cm9sLmNvbnRyb2wudmFsaWRhdG9yICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG5nQ29udHJvbC5jb250cm9sLnNldFZhbGlkYXRvcnMoYWxsVmFsaWRhdG9ycyk7XHJcbiAgICAgICAgbmdDb250cm9sLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIHJldHVybiBuZ0NvbnRyb2w7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZUxhYmVsKCkge1xyXG4gICAgY29uc3QgbGFiZWxUeXBlID0gdHlwZW9mIHRoaXMubGFiZWw7XHJcbiAgICAvLyBJZiBsYWJlbFR5cGUgaXMgZmFsc3ksIGRvIG5vdCB0aHJvdyB0aGUgZXJyb3IsIHNpbmNlIHdlIGhhdmUgYSBiYWNrdXAgbGFiZWwgaW4gY2FzZSBpdCdzIGZhbHN5LlxyXG4gICAgaWYgKGxhYmVsVHlwZSAhPT0gJ3N0cmluZycgJiYgdGhpcy5sYWJlbCkge1xyXG4gICAgICBjb25zdCB0eXBlTXNnID0gYDxBYnN0cmFjdEZvcm1Db250cm9sPiBJbnZhbGlkIGlucHV0IHByb3ZpZGVkIHRvIFtsYWJlbF0uICBMYWJlbCBtdXN0IGJlIGEgc3RyaW5nIGFuZCB5b3UgcHJvdmlkZWQgYSAke2xhYmVsVHlwZX1gO1xyXG4gICAgICB0aHJvdyBuZXcgTW9IQ29tbW9uTGlicmFyeUVycm9yKHR5cGVNc2cpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=