UNPKG

ngx-form-control

Version:
185 lines (184 loc) 15.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, Input, ViewChild } from '@angular/core'; import { NG_VALIDATORS, NG_VALUE_ACCESSOR, NgModel, } from '@angular/forms'; import { BaseControlComponent } from '../../utils/base-control.component'; var FormTextareaComponent = /** @class */ (function (_super) { tslib_1.__extends(FormTextareaComponent, _super); function FormTextareaComponent() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.rows = 5; _this.readonly = false; _this.trimResult = true; _this.minLengthErrorMessage = 'Value is too short.'; return _this; } Object.defineProperty(FormTextareaComponent.prototype, "value", { get: /** * @return {?} */ function () { if (!this._innerValue) { return ''; } if ('string' !== typeof this._innerValue) { return this._innerValue; } return this.trimResult ? this._innerValue.trim() : this._innerValue; }, set: /** * @param {?} value * @return {?} */ function (value) { if (value !== this._innerValue) { this._innerValue = value; this.triggerChange(); } }, enumerable: true, configurable: true }); Object.defineProperty(FormTextareaComponent.prototype, "hasMinLengthError", { get: /** * @return {?} */ function () { return this.customTextarea.errors && this.customTextarea.errors['minlength']; }, enumerable: true, configurable: true }); Object.defineProperty(FormTextareaComponent.prototype, "invalid", { get: /** * @return {?} */ function () { if (this.hasCustomError) { return true; } if (!this.customTextarea.touched) { return false; } return this.customTextarea.invalid || this.hasRequiredError; }, enumerable: true, configurable: true }); Object.defineProperty(FormTextareaComponent.prototype, "valid", { get: /** * @return {?} */ function () { if (this.hasCustomError) { return false; } if (!this.customTextarea.touched) { return false; } return !this.customTextarea.invalid && !this.hasRequiredError; }, enumerable: true, configurable: true }); Object.defineProperty(FormTextareaComponent.prototype, "errorMessages", { get: /** * @return {?} */ function () { if (this.hasRequiredError) { return [this.requiredErrorMessage]; } if (this.hasMinLengthError) { return [this.minLengthErrorMessage]; } if (this.hasCustomError) { return this.innerCustomErrorMessages; } }, enumerable: true, configurable: true }); /** * @param {?} value * @return {?} */ FormTextareaComponent.prototype.writeValue = /** * @param {?} value * @return {?} */ function (value) { this._innerValue = value; }; /** * @return {?} */ FormTextareaComponent.prototype.validate = /** * @return {?} */ function () { /** @type {?} */ var result = this.customTextarea.errors || {}; if (this.hasRequiredError) { result['required'] = true; } else { delete result['required']; } return result; }; // noinspection JSUnusedGlobalSymbols /** * @return {?} */ FormTextareaComponent.prototype.reset = /** * @return {?} */ function () { this.customTextarea.reset(); }; FormTextareaComponent.decorators = [ { type: Component, args: [{ selector: 'ngx-form-textarea', template: "<label *ngIf=\"label\" [for]=\"id\">{{label}}</label>\n\n<!--suppress HtmlFormInputWithoutLabel -->\n<textarea class=\"form-control\"\n [ngClass]=\"{'is-invalid': invalid, 'is-valid': valid}\"\n [id]=\"id\"\n [title]=\"title\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [minlength]=\"minlength\"\n [maxlength]=\"maxlength\"\n [placeholder]=\"placeholder\"\n [(ngModel)]=\"value\"\n [rows]=\"rows\"\n #customTextarea=\"ngModel\"></textarea>\n\n<div class=\"valid-feedback\" *ngIf=\"valid && validMessage\">{{validMessage}}</div>\n\n<div class=\"invalid-feedback\" *ngIf=\"invalid\">\n <span *ngFor=\"let message of errorMessages; let last = last;\">\n {{message}}<br *ngIf=\"!last\">\n </span>\n</div>\n", styles: [""], providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: FormTextareaComponent, multi: true }, { provide: NG_VALIDATORS, useExisting: FormTextareaComponent, multi: true } ] },] }, ]; FormTextareaComponent.propDecorators = { rows: [{ type: Input }], readonly: [{ type: Input }], minlength: [{ type: Input }], maxlength: [{ type: Input }], trimResult: [{ type: Input }], minLengthErrorMessage: [{ type: Input }], customTextarea: [{ type: ViewChild, args: ['customTextarea',] }] }; return FormTextareaComponent; }(BaseControlComponent)); export { FormTextareaComponent }; if (false) { /** @type {?} */ FormTextareaComponent.prototype.rows; /** @type {?} */ FormTextareaComponent.prototype.readonly; /** @type {?} */ FormTextareaComponent.prototype.minlength; /** @type {?} */ FormTextareaComponent.prototype.maxlength; /** @type {?} */ FormTextareaComponent.prototype.trimResult; /** @type {?} */ FormTextareaComponent.prototype.minLengthErrorMessage; /** @type {?} */ FormTextareaComponent.prototype.customTextarea; /** @type {?} */ FormTextareaComponent.prototype._innerValue; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS10ZXh0YXJlYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtZm9ybS1jb250cm9sLyIsInNvdXJjZXMiOlsibGliL2Zvcm0tdGV4dGFyZWEvZm9ybS10ZXh0YXJlYS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFDLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEdBQW9CLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUYsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7O0lBbUM3QixpREFBb0I7OztxQkFFN0MsQ0FBQzt5QkFDRyxLQUFLOzJCQUdILElBQUk7c0NBQ08scUJBQXFCOzs7SUFJdEQsc0JBQUksd0NBQUs7Ozs7UUFBVDtZQUNFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLE1BQU0sQ0FBQyxFQUFFLENBQUM7YUFDWDtZQUVELEVBQUUsQ0FBQyxDQUFDLFFBQVEsS0FBSyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUN6QyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUN6QjtZQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQ3JFOzs7OztRQUVELFVBQVUsS0FBYTtZQUNyQixFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUN6QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7YUFD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Q0wsS0FBSzs0QkFDTCxLQUFLOzZCQUNMLEtBQUs7d0NBQ0wsS0FBSztpQ0FDTCxTQUFTLFNBQUMsZ0JBQWdCOztnQ0E3QzdCO0VBcUMyQyxvQkFBb0I7U0FBbEQscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge05HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOZ01vZGVsLCBWYWxpZGF0aW9uRXJyb3JzLH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge0Jhc2VDb250cm9sQ29tcG9uZW50fSBmcm9tICcuLi8uLi91dGlscy9iYXNlLWNvbnRyb2wuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmd4LWZvcm0tdGV4dGFyZWEnLFxyXG4gIHRlbXBsYXRlOiBgPGxhYmVsICpuZ0lmPVwibGFiZWxcIiBbZm9yXT1cImlkXCI+e3tsYWJlbH19PC9sYWJlbD5cclxuXHJcbjwhLS1zdXBwcmVzcyBIdG1sRm9ybUlucHV0V2l0aG91dExhYmVsIC0tPlxyXG48dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzogaW52YWxpZCwgJ2lzLXZhbGlkJzogdmFsaWR9XCJcclxuICAgICAgICAgIFtpZF09XCJpZFwiXHJcbiAgICAgICAgICBbdGl0bGVdPVwidGl0bGVcIlxyXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgW21pbmxlbmd0aF09XCJtaW5sZW5ndGhcIlxyXG4gICAgICAgICAgW21heGxlbmd0aF09XCJtYXhsZW5ndGhcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxyXG4gICAgICAgICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICAgICAgICAjY3VzdG9tVGV4dGFyZWE9XCJuZ01vZGVsXCI+PC90ZXh0YXJlYT5cclxuXHJcbjxkaXYgY2xhc3M9XCJ2YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwidmFsaWQgJiYgdmFsaWRNZXNzYWdlXCI+e3t2YWxpZE1lc3NhZ2V9fTwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImludmFsaWRcIj5cclxuICA8c3BhbiAqbmdGb3I9XCJsZXQgbWVzc2FnZSBvZiBlcnJvck1lc3NhZ2VzOyBsZXQgbGFzdCA9IGxhc3Q7XCI+XHJcbiAgICB7e21lc3NhZ2V9fTxiciAqbmdJZj1cIiFsYXN0XCI+XHJcbiAgPC9zcGFuPlxyXG48L2Rpdj5cclxuYCxcclxuICBzdHlsZXM6IFtgYF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBGb3JtVGV4dGFyZWFDb21wb25lbnQsIG11bHRpOiB0cnVlfSxcclxuICAgIHtwcm92aWRlOiBOR19WQUxJREFUT1JTLCB1c2VFeGlzdGluZzogRm9ybVRleHRhcmVhQ29tcG9uZW50LCBtdWx0aTogdHJ1ZX1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtVGV4dGFyZWFDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29udHJvbENvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIHJvd3MgPSA1O1xyXG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbWlubGVuZ3RoOiBudW1iZXI7XHJcbiAgQElucHV0KCkgbWF4bGVuZ3RoOiBudW1iZXI7XHJcbiAgQElucHV0KCkgdHJpbVJlc3VsdCA9IHRydWU7XHJcbiAgQElucHV0KCkgbWluTGVuZ3RoRXJyb3JNZXNzYWdlID0gJ1ZhbHVlIGlzIHRvbyBzaG9ydC4nO1xyXG4gIEBWaWV3Q2hpbGQoJ2N1c3RvbVRleHRhcmVhJykgY3VzdG9tVGV4dGFyZWE6IE5nTW9kZWw7XHJcbiAgcHJpdmF0ZSBfaW5uZXJWYWx1ZTogc3RyaW5nO1xyXG5cclxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5faW5uZXJWYWx1ZSkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCdzdHJpbmcnICE9PSB0eXBlb2YgdGhpcy5faW5uZXJWYWx1ZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5faW5uZXJWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy50cmltUmVzdWx0ID8gdGhpcy5faW5uZXJWYWx1ZS50cmltKCkgOiB0aGlzLl9pbm5lclZhbHVlO1xyXG4gIH1cclxuXHJcbiAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5faW5uZXJWYWx1ZSkge1xyXG4gICAgICB0aGlzLl9pbm5lclZhbHVlID0gdmFsdWU7XHJcbiAgICAgIHRoaXMudHJpZ2dlckNoYW5nZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc01pbkxlbmd0aEVycm9yKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tVGV4dGFyZWEuZXJyb3JzICYmIHRoaXMuY3VzdG9tVGV4dGFyZWEuZXJyb3JzWydtaW5sZW5ndGgnXTtcclxuICB9XHJcblxyXG4gIGdldCBpbnZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuaGFzQ3VzdG9tRXJyb3IpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmN1c3RvbVRleHRhcmVhLnRvdWNoZWQpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmN1c3RvbVRleHRhcmVhLmludmFsaWQgfHwgdGhpcy5oYXNSZXF1aXJlZEVycm9yO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuaGFzQ3VzdG9tRXJyb3IpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5jdXN0b21UZXh0YXJlYS50b3VjaGVkKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gIXRoaXMuY3VzdG9tVGV4dGFyZWEuaW52YWxpZCAmJiAhdGhpcy5oYXNSZXF1aXJlZEVycm9yO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVycm9yTWVzc2FnZXMoKTogQXJyYXk8c3RyaW5nPiB7XHJcbiAgICBpZiAodGhpcy5oYXNSZXF1aXJlZEVycm9yKSB7XHJcbiAgICAgIHJldHVybiBbdGhpcy5yZXF1aXJlZEVycm9yTWVzc2FnZV07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaGFzTWluTGVuZ3RoRXJyb3IpIHtcclxuICAgICAgcmV0dXJuIFt0aGlzLm1pbkxlbmd0aEVycm9yTWVzc2FnZV07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaGFzQ3VzdG9tRXJyb3IpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaW5uZXJDdXN0b21FcnJvck1lc3NhZ2VzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pbm5lclZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzIHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY3VzdG9tVGV4dGFyZWEuZXJyb3JzIHx8IHt9O1xyXG5cclxuICAgIGlmICh0aGlzLmhhc1JlcXVpcmVkRXJyb3IpIHtcclxuICAgICAgcmVzdWx0WydyZXF1aXJlZCddID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRlbGV0ZSByZXN1bHRbJ3JlcXVpcmVkJ107XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vIG5vaW5zcGVjdGlvbiBKU1VudXNlZEdsb2JhbFN5bWJvbHNcclxuICByZXNldCgpIHtcclxuICAgIHRoaXMuY3VzdG9tVGV4dGFyZWEucmVzZXQoKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==