ngx-form-control
Version:
Form controls for angular 6
157 lines (156 loc) • 9.77 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { Input } from '@angular/core';
/**
* @abstract
*/
export class BaseControlComponent {
constructor() {
this.id = 'ngx-' + Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
this.innerCustomErrorMessages = [];
this.name = '';
this.label = '';
this.placeholder = '';
this.title = '';
this.required = false;
this.disabled = false;
this.validMessage = '';
this.requiredErrorMessage = 'This field is required.';
}
/**
* @param {?} messages
* @return {?}
*/
set customErrorMessages(messages) {
if (!messages) {
this.innerCustomErrorMessages = [];
}
else if ('string' === typeof messages) {
this.innerCustomErrorMessages = [messages];
}
else if (messages[0]) {
this.innerCustomErrorMessages = messages;
}
else {
this.innerCustomErrorMessages = [];
}
}
/**
* @return {?}
*/
get hasCustomError() {
return !!(this.innerCustomErrorMessages && this.innerCustomErrorMessages[0]);
}
/**
* @return {?}
*/
get hasRequiredError() {
return this.required && this.value !== false && this.value !== 0 && !this.value;
}
/**
* @param {?} fn
* @return {?}
*/
registerOnChange(fn) {
this._onChangeCallback = event => {
if (this.cleanCustomErrorMessageOnChanged) {
this.innerCustomErrorMessages = [];
}
return fn(event);
};
}
/**
* @param {?} fn
* @return {?}
*/
registerOnTouched(fn) {
this._onTouchedCallback = fn;
}
/**
* @return {?}
*/
triggerChange() {
if (this._onChangeCallback) {
this._onChangeCallback(this.value);
}
}
}
BaseControlComponent.propDecorators = {
name: [{ type: Input }],
label: [{ type: Input }],
placeholder: [{ type: Input }],
title: [{ type: Input }],
required: [{ type: Input }],
disabled: [{ type: Input }],
validMessage: [{ type: Input }],
requiredErrorMessage: [{ type: Input }],
cleanCustomErrorMessageOnChanged: [{ type: Input }],
customErrorMessages: [{ type: Input }]
};
if (false) {
/** @type {?} */
BaseControlComponent.prototype.id;
/** @type {?} */
BaseControlComponent.prototype.innerCustomErrorMessages;
/** @type {?} */
BaseControlComponent.prototype.name;
/** @type {?} */
BaseControlComponent.prototype.label;
/** @type {?} */
BaseControlComponent.prototype.placeholder;
/** @type {?} */
BaseControlComponent.prototype.title;
/** @type {?} */
BaseControlComponent.prototype.required;
/** @type {?} */
BaseControlComponent.prototype.disabled;
/** @type {?} */
BaseControlComponent.prototype.validMessage;
/** @type {?} */
BaseControlComponent.prototype.requiredErrorMessage;
/** @type {?} */
BaseControlComponent.prototype.cleanCustomErrorMessageOnChanged;
/** @type {?} */
BaseControlComponent.prototype._onTouchedCallback;
/** @type {?} */
BaseControlComponent.prototype._onChangeCallback;
/**
* @abstract
* @return {?}
*/
BaseControlComponent.prototype.value = function () { };
/**
* @abstract
* @return {?}
*/
BaseControlComponent.prototype.invalid = function () { };
/**
* @abstract
* @return {?}
*/
BaseControlComponent.prototype.valid = function () { };
/**
* @abstract
* @return {?}
*/
BaseControlComponent.prototype.errorMessages = function () { };
/**
* @abstract
* @param {?} value
* @return {?}
*/
BaseControlComponent.prototype.writeValue = function (value) { };
/**
* @abstract
* @return {?}
*/
BaseControlComponent.prototype.validate = function () { };
/**
* @abstract
* @return {?}
*/
BaseControlComponent.prototype.reset = function () { };
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1mb3JtLWNvbnRyb2wvIiwic291cmNlcyI6WyJ1dGlscy9iYXNlLWNvbnRyb2wuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7O0FBRXBDLE1BQU07O2tCQUdRLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO3dDQUM5QyxFQUFFO29CQUM1QixFQUFFO3FCQUNELEVBQUU7MkJBQ0ksRUFBRTtxQkFDUixFQUFFO3dCQUNDLEtBQUs7d0JBQ0wsS0FBSzs0QkFDRCxFQUFFO29DQUNNLHlCQUF5Qjs7Ozs7O0lBS3pELElBQWEsbUJBQW1CLENBQUMsUUFBZ0M7UUFDL0QsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEVBQUUsQ0FBQztTQUNwQztRQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEtBQUssT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzVDO1FBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLFFBQVEsQ0FBQztTQUMxQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sSUFBSSxDQUFDLHdCQUF3QixHQUFHLEVBQUUsQ0FBQztTQUNwQztLQUNGOzs7O0lBVUQsSUFBSSxjQUFjO1FBQ2hCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLElBQUksSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDOUU7Ozs7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDakY7Ozs7O0lBSUQsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLEVBQUU7WUFDL0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEVBQUUsQ0FBQzthQUNwQztZQUVELE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbEIsQ0FBQztLQUNIOzs7OztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztLQUM5Qjs7OztJQUVELGFBQWE7UUFDWCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDcEM7S0FDRjs7O21CQTVEQSxLQUFLO29CQUNMLEtBQUs7MEJBQ0wsS0FBSztvQkFDTCxLQUFLO3VCQUNMLEtBQUs7dUJBQ0wsS0FBSzsyQkFDTCxLQUFLO21DQUNMLEtBQUs7K0NBQ0wsS0FBSztrQ0FJTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7SW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDb250cm9sQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XHJcblxyXG4gIC8vIG5vaW5zcGVjdGlvbiBKU1VudXNlZEdsb2JhbFN5bWJvbHNcclxuICBwdWJsaWMgaWQgPSAnbmd4LScgKyBNYXRoLmZsb29yKCgxICsgTWF0aC5yYW5kb20oKSkgKiAweDEwMDAwKS50b1N0cmluZygxNikuc3Vic3RyaW5nKDEpO1xyXG4gIGlubmVyQ3VzdG9tRXJyb3JNZXNzYWdlczogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gIEBJbnB1dCgpIG5hbWUgPSAnJztcclxuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XHJcbiAgQElucHV0KCkgdGl0bGUgPSAnJztcclxuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdmFsaWRNZXNzYWdlID0gJyc7XHJcbiAgQElucHV0KCkgcmVxdWlyZWRFcnJvck1lc3NhZ2UgPSAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4nO1xyXG4gIEBJbnB1dCgpIGNsZWFuQ3VzdG9tRXJyb3JNZXNzYWdlT25DaGFuZ2VkO1xyXG4gIHByb3RlY3RlZCBfb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQ7XHJcbiAgcHJvdGVjdGVkIF9vbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkO1xyXG5cclxuICBASW5wdXQoKSBzZXQgY3VzdG9tRXJyb3JNZXNzYWdlcyhtZXNzYWdlczogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPikge1xyXG4gICAgaWYgKCFtZXNzYWdlcykge1xyXG4gICAgICB0aGlzLmlubmVyQ3VzdG9tRXJyb3JNZXNzYWdlcyA9IFtdO1xyXG4gICAgfSBlbHNlIGlmICgnc3RyaW5nJyA9PT0gdHlwZW9mIG1lc3NhZ2VzKSB7XHJcbiAgICAgIHRoaXMuaW5uZXJDdXN0b21FcnJvck1lc3NhZ2VzID0gW21lc3NhZ2VzXTtcclxuICAgIH0gZWxzZSBpZiAobWVzc2FnZXNbMF0pIHtcclxuICAgICAgdGhpcy5pbm5lckN1c3RvbUVycm9yTWVzc2FnZXMgPSBtZXNzYWdlcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW5uZXJDdXN0b21FcnJvck1lc3NhZ2VzID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhYnN0cmFjdCBnZXQgdmFsdWUoKTtcclxuXHJcbiAgYWJzdHJhY3QgZ2V0IGludmFsaWQoKTogYm9vbGVhbjtcclxuXHJcbiAgYWJzdHJhY3QgZ2V0IHZhbGlkKCk6IGJvb2xlYW47XHJcblxyXG4gIGFic3RyYWN0IGdldCBlcnJvck1lc3NhZ2VzKCk6IEFycmF5PHN0cmluZz47XHJcblxyXG4gIGdldCBoYXNDdXN0b21FcnJvcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhISh0aGlzLmlubmVyQ3VzdG9tRXJyb3JNZXNzYWdlcyAmJiB0aGlzLmlubmVyQ3VzdG9tRXJyb3JNZXNzYWdlc1swXSk7XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzUmVxdWlyZWRFcnJvcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnJlcXVpcmVkICYmIHRoaXMudmFsdWUgIT09IGZhbHNlICYmIHRoaXMudmFsdWUgIT09IDAgJiYgIXRoaXMudmFsdWU7XHJcbiAgfVxyXG5cclxuICBhYnN0cmFjdCB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkO1xyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sgPSBldmVudCA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmNsZWFuQ3VzdG9tRXJyb3JNZXNzYWdlT25DaGFuZ2VkKSB7XHJcbiAgICAgICAgdGhpcy5pbm5lckN1c3RvbUVycm9yTWVzc2FnZXMgPSBbXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGZuKGV2ZW50KTtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xyXG4gIH1cclxuXHJcbiAgdHJpZ2dlckNoYW5nZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKSB7XHJcbiAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sodGhpcy52YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhYnN0cmFjdCB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzO1xyXG5cclxuICAvLyBub2luc3BlY3Rpb24gSlNVbnVzZWRHbG9iYWxTeW1ib2xzXHJcbiAgYWJzdHJhY3QgcmVzZXQoKTogdm9pZDtcclxuXHJcbn1cclxuXHJcblxyXG4iXX0=