UNPKG

@asi-ngtools/lib

Version:

This project is a little components library, simple to use, which will help you to simplify your project.

194 lines (193 loc) 13.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { DefaultControlValueAccessor } from './../common/default-control-value-accessor'; import { NG_VALUE_ACCESSOR, FormControl } from '@angular/forms'; import { Component, forwardRef, Input, ElementRef, ViewChild, Renderer2 } from '@angular/core'; import * as nh from '../../native-helper'; var AsiTextareaComponent = /** @class */ (function (_super) { tslib_1.__extends(AsiTextareaComponent, _super); function AsiTextareaComponent(renderer, elementRef) { var _this = _super.call(this) || this; _this.renderer = renderer; _this.elementRef = elementRef; /** * Label position */ _this.labelPosition = 'top'; /** * Placeholder to display (is translated) */ _this.placeholder = ''; /** * number of rows to display */ _this.rows = 2; /** * number of cols */ _this.cols = 100; /** * max length of the text */ _this.maxlength = -1; _this.textareaControl = new FormControl(); return _this; } /** * @return {?} */ AsiTextareaComponent.prototype.ngOnInit = /** * @return {?} */ function () { this.renderer.addClass(this.elementRef.nativeElement, 'label-' + this.labelPosition); }; /** * @return {?} */ AsiTextareaComponent.prototype.ngAfterViewInit = /** * @return {?} */ function () { var _this = this; this.textareaControl.valueChanges.subscribe(function (value) { if (value === '') { _this.value = null; } else if (_this.isValide(value)) { _this.value = value; } else if (_this.maxlength !== -1 && value.length > _this.maxlength) { // si la taille n'est pas respectée on coupe // si la taille n'est pas respectée on coupe _this.value = value.substr(0, _this.maxlength); } _this.textareaElm.nativeElement.value = _this._value || ''; }); }; /** * @param {?} value * @return {?} */ AsiTextareaComponent.prototype.isValide = /** * @param {?} value * @return {?} */ function (value) { return value == null || ((this.maxlength === -1 || value.length <= this.maxlength) && (this.pattern == null || this.pattern.test(value))); }; /** * @param {?} value * @return {?} */ AsiTextareaComponent.prototype.writeValue = /** * @param {?} value * @return {?} */ function (value) { if (this.isValide(value)) { this.textareaControl.setValue(value, { emitEvent: false }); } else if (this.maxlength !== -1 && value.length > this.maxlength) { // Length incorrect on truncate this.textareaControl.setValue(nh.truncate(value, this.maxlength), { emitEvent: false }); } else { // Pattern incorrect this.textareaElm.nativeElement.value = 'Incorrect value'; } }; AsiTextareaComponent.decorators = [ { type: Component, args: [{ selector: 'asi-textarea', host: { 'class': 'asi-component asi-textarea' }, template: "<label class=\"input-label\" *ngIf=\"label != null\">{{label | translate}}</label>\n<textarea #textarea\n[attr.id]=\"id\"\n[attr.name]=\"name\"\n[attr.rows]=\"rows\"\n[attr.cols]=\"cols\"\nclass=\"asi-focus-error\"\n[attr.disabled]=\"disabled ? '' : null\"\n[placeholder]=\"placeholder\"\n[formControl]=\"textareaControl\"></textarea>\n", providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(function () { return AsiTextareaComponent; }), multi: true } ] }] } ]; /** @nocollapse */ AsiTextareaComponent.ctorParameters = function () { return [ { type: Renderer2 }, { type: ElementRef } ]; }; AsiTextareaComponent.propDecorators = { id: [{ type: Input }], name: [{ type: Input }], label: [{ type: Input }], labelPosition: [{ type: Input }], placeholder: [{ type: Input }], rows: [{ type: Input }], cols: [{ type: Input }], maxlength: [{ type: Input }], pattern: [{ type: Input }], textareaElm: [{ type: ViewChild, args: ['textarea',] }] }; return AsiTextareaComponent; }(DefaultControlValueAccessor)); export { AsiTextareaComponent }; if (false) { /** * html id * @type {?} */ AsiTextareaComponent.prototype.id; /** * html name * @type {?} */ AsiTextareaComponent.prototype.name; /** * Label to display (is translated) * @type {?} */ AsiTextareaComponent.prototype.label; /** * Label position * @type {?} */ AsiTextareaComponent.prototype.labelPosition; /** * Placeholder to display (is translated) * @type {?} */ AsiTextareaComponent.prototype.placeholder; /** * number of rows to display * @type {?} */ AsiTextareaComponent.prototype.rows; /** * number of cols * @type {?} */ AsiTextareaComponent.prototype.cols; /** * max length of the text * @type {?} */ AsiTextareaComponent.prototype.maxlength; /** * Allow you to define a regex that the input must respect * @type {?} */ AsiTextareaComponent.prototype.pattern; /** @type {?} */ AsiTextareaComponent.prototype.textareaControl; /** @type {?} */ AsiTextareaComponent.prototype.textareaElm; /** @type {?} */ AsiTextareaComponent.prototype.renderer; /** @type {?} */ AsiTextareaComponent.prototype.elementRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLXRleHRhcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhc2ktbmd0b29scy9saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9hc2ktdGV4dGFyZWEvYXNpLXRleHRhcmVhLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBeUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXRILE9BQU8sS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0lBY0EsZ0RBQTJCO0lBNkJuRSw4QkFBb0IsUUFBbUIsRUFDN0I7UUFEVixZQUVFLGlCQUFPLFNBQ1I7UUFIbUIsY0FBUSxHQUFSLFFBQVEsQ0FBVztRQUM3QixnQkFBVSxHQUFWLFVBQVU7Ozs7OEJBckIyRSxLQUFLOzs7OzRCQUU3RSxFQUFFOzs7O3FCQUdULENBQUM7Ozs7cUJBR0QsR0FBRzs7OzswQkFHRSxDQUFDLENBQUM7Z0NBS0wsSUFBSSxXQUFXLEVBQUU7O0tBT2xDOzs7O0lBRUQsdUNBQVE7OztJQUFSO1FBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUN0Rjs7OztJQUVELDhDQUFlOzs7SUFBZjtRQUFBLGlCQVlDO1FBWEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFVBQUMsS0FBSztZQUNoRCxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDakIsS0FBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7YUFDbkI7WUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLEtBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2FBQ3BCO1lBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUksQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzs7Z0JBRWxFLEFBREEsNENBQTRDO2dCQUM1QyxLQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUM5QztZQUNELEtBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxLQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztTQUMxRCxDQUFDLENBQUM7S0FDSjs7Ozs7SUFFTyx1Q0FBUTs7OztjQUFDLEtBQWE7UUFDNUIsTUFBTSxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDO2VBQzdFLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBOzs7Ozs7SUFHMUQseUNBQVU7Ozs7SUFBVixVQUFXLEtBQWE7UUFDdEIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDNUQ7UUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDOztZQUVsRSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUN6RjtRQUFDLElBQUksQ0FBQyxDQUFDOztZQUVOLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxpQkFBaUIsQ0FBQztTQUMxRDtLQUNGOztnQkEvRUYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUU7b0JBQy9DLDRWQUEwQztvQkFDMUMsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsY0FBTSxPQUFBLG9CQUFvQixFQUFwQixDQUFvQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjs7OztnQkFmb0YsU0FBUztnQkFBdkQsVUFBVTs7O3FCQW1COUMsS0FBSzt1QkFFTCxLQUFLO3dCQUVMLEtBQUs7Z0NBRUwsS0FBSzs4QkFFTCxLQUFLO3VCQUdMLEtBQUs7dUJBR0wsS0FBSzs0QkFHTCxLQUFLOzBCQUdMLEtBQUs7OEJBSUwsU0FBUyxTQUFDLFVBQVU7OytCQTdDdkI7RUFrQjBDLDJCQUEyQjtTQUF4RCxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWZhdWx0Q29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICcuLy4uL2NvbW1vbi9kZWZhdWx0LWNvbnRyb2wtdmFsdWUtYWNjZXNzb3InO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgKiBhcyBuaCBmcm9tICcuLi8uLi9uYXRpdmUtaGVscGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXNpLXRleHRhcmVhJyxcbiAgaG9zdDogeyAnY2xhc3MnOiAnYXNpLWNvbXBvbmVudCBhc2ktdGV4dGFyZWEnIH0sXG4gIHRlbXBsYXRlVXJsOiAnYXNpLXRleHRhcmVhLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBc2lUZXh0YXJlYUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBc2lUZXh0YXJlYUNvbXBvbmVudCBleHRlbmRzIERlZmF1bHRDb250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgLyoqIGh0bWwgaWQgKi9cbiAgQElucHV0KCkgaWQ6IHN0cmluZztcbiAgLyoqIGh0bWwgbmFtZSAqL1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG4gIC8qKiBMYWJlbCB0byBkaXNwbGF5IChpcyB0cmFuc2xhdGVkKSAqL1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuICAvKiogTGFiZWwgcG9zaXRpb24gKi9cbiAgQElucHV0KCkgbGFiZWxQb3NpdGlvbjogJ3RvcCcgfCAnbGVmdCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgfCAnYm90dG9tLWNlbnRlcicgfCAndG9wLWNlbnRlcicgPSAndG9wJztcbiAgLyoqIFBsYWNlaG9sZGVyIHRvIGRpc3BsYXkgKGlzIHRyYW5zbGF0ZWQpICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG5cbiAgLyoqIG51bWJlciBvZiByb3dzIHRvIGRpc3BsYXkgKi9cbiAgQElucHV0KCkgcm93cyA9IDI7XG5cbiAgLyoqIG51bWJlciBvZiBjb2xzICovXG4gIEBJbnB1dCgpIGNvbHMgPSAxMDA7XG5cbiAgLyoqIG1heCBsZW5ndGggb2YgdGhlIHRleHQgKi9cbiAgQElucHV0KCkgbWF4bGVuZ3RoID0gLTE7XG5cbiAgLyoqIEFsbG93IHlvdSB0byBkZWZpbmUgYSByZWdleCB0aGF0IHRoZSBpbnB1dCBtdXN0IHJlc3BlY3QgKi9cbiAgQElucHV0KCkgcGF0dGVybjogUmVnRXhwO1xuXG4gIHRleHRhcmVhQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuXG4gIEBWaWV3Q2hpbGQoJ3RleHRhcmVhJykgdGV4dGFyZWFFbG06IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbGFiZWwtJyArIHRoaXMubGFiZWxQb3NpdGlvbik7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy50ZXh0YXJlYUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNWYWxpZGUodmFsdWUpKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXhsZW5ndGggIT09IC0xICYmIHZhbHVlLmxlbmd0aCA+IHRoaXMubWF4bGVuZ3RoKSB7XG4gICAgICAgIC8vIHNpIGxhIHRhaWxsZSBuJ2VzdCBwYXMgcmVzcGVjdMOpZSBvbiBjb3VwZVxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWUuc3Vic3RyKDAsIHRoaXMubWF4bGVuZ3RoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudGV4dGFyZWFFbG0ubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuX3ZhbHVlIHx8ICcnO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkZSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHZhbHVlID09IG51bGwgfHwgKCh0aGlzLm1heGxlbmd0aCA9PT0gLTEgfHwgdmFsdWUubGVuZ3RoIDw9IHRoaXMubWF4bGVuZ3RoKVxuICAgICAgJiYgKHRoaXMucGF0dGVybiA9PSBudWxsIHx8IHRoaXMucGF0dGVybi50ZXN0KHZhbHVlKSkpXG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1ZhbGlkZSh2YWx1ZSkpIHtcbiAgICAgIHRoaXMudGV4dGFyZWFDb250cm9sLnNldFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1heGxlbmd0aCAhPT0gLTEgJiYgdmFsdWUubGVuZ3RoID4gdGhpcy5tYXhsZW5ndGgpIHtcbiAgICAgIC8vIExlbmd0aCBpbmNvcnJlY3Qgb24gdHJ1bmNhdGVcbiAgICAgIHRoaXMudGV4dGFyZWFDb250cm9sLnNldFZhbHVlKG5oLnRydW5jYXRlKHZhbHVlLCB0aGlzLm1heGxlbmd0aCksIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUGF0dGVybiBpbmNvcnJlY3RcbiAgICAgIHRoaXMudGV4dGFyZWFFbG0ubmF0aXZlRWxlbWVudC52YWx1ZSA9ICdJbmNvcnJlY3QgdmFsdWUnO1xuICAgIH1cbiAgfVxufVxuIl19