UNPKG

ngx-form-control

Version:
157 lines (156 loc) 9.77 kB
/** * @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=