UNPKG

@asi-ngtools/lib

Version:

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

208 lines (207 loc) 14.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 { debounceTime } from 'rxjs/operators'; import * as nh from '../../native-helper'; var AsiInputComponent = /** @class */ (function (_super) { tslib_1.__extends(AsiInputComponent, _super); function AsiInputComponent(renderer, elementRef) { var _this = _super.call(this) || this; _this.renderer = renderer; _this.elementRef = elementRef; /** * html input type */ _this.type = 'text'; /** * Label position */ _this.labelPosition = 'top'; /** * placeholder (is translated) */ _this.placeholder = ''; /** * Max length of the text */ _this.maxlength = -1; /** * Must be a number (internaly set the regex to ^-*[0-9,\.]*$ */ _this.number = false; /** * Delay before the component change value */ _this.delay = 0; _this.inputControl = new FormControl(); return _this; } /** * @return {?} */ AsiInputComponent.prototype.ngOnInit = /** * @return {?} */ function () { this.renderer.addClass(this.elementRef.nativeElement, 'label-' + this.labelPosition); if (this.number) { this.pattern = new RegExp('^-*[0-9,\.]*$'); } }; /** * @return {?} */ AsiInputComponent.prototype.ngAfterViewInit = /** * @return {?} */ function () { var _this = this; this.inputControl.valueChanges.pipe(debounceTime(this.delay)).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) { // if value is too long, we truncate // if value is too long, we truncate _this.value = value.substr(0, _this.maxlength); } _this.inputElm.nativeElement.value = _this._value; }); }; /** * @param {?} value * @return {?} */ AsiInputComponent.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 {?} */ AsiInputComponent.prototype.writeValue = /** * @param {?} value * @return {?} */ function (value) { if (this.isValide(value)) { this.inputControl.setValue(value, { emitEvent: false }); } else if (this.maxlength !== -1 && value.length > this.maxlength) { // Length incorrect on truncate this.inputControl.setValue(nh.truncate(value, this.maxlength), { emitEvent: false }); } else { // Pattern incorrect this.inputElm.nativeElement.value = 'Incorrect value'; } }; AsiInputComponent.decorators = [ { type: Component, args: [{ selector: 'asi-input', host: { 'class': 'asi-component asi-input' }, template: "<label class=\"input-label\" *ngIf=\"label != null\">{{label | translate}}</label>\n<input #asiInput class=\"asi-focus-error\"\n [attr.id]=\"id\"\n [attr.name]=\"name\"\n [attr.type]=\"type\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.placeholder]=\"placeholder\"\n [formControl]=\"inputControl\"/>\n", providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(function () { return AsiInputComponent; }), multi: true } ] }] } ]; /** @nocollapse */ AsiInputComponent.ctorParameters = function () { return [ { type: Renderer2 }, { type: ElementRef } ]; }; AsiInputComponent.propDecorators = { id: [{ type: Input }], name: [{ type: Input }], type: [{ type: Input }], label: [{ type: Input }], labelPosition: [{ type: Input }], placeholder: [{ type: Input }], pattern: [{ type: Input }], maxlength: [{ type: Input }], number: [{ type: Input }], delay: [{ type: Input }], inputElm: [{ type: ViewChild, args: ['asiInput',] }] }; return AsiInputComponent; }(DefaultControlValueAccessor)); export { AsiInputComponent }; if (false) { /** * html id * @type {?} */ AsiInputComponent.prototype.id; /** * html name * @type {?} */ AsiInputComponent.prototype.name; /** * html input type * @type {?} */ AsiInputComponent.prototype.type; /** * Label to display (is translated) * @type {?} */ AsiInputComponent.prototype.label; /** * Label position * @type {?} */ AsiInputComponent.prototype.labelPosition; /** * placeholder (is translated) * @type {?} */ AsiInputComponent.prototype.placeholder; /** * Allow you to define a regex that the input must respect * @type {?} */ AsiInputComponent.prototype.pattern; /** * Max length of the text * @type {?} */ AsiInputComponent.prototype.maxlength; /** * Must be a number (internaly set the regex to ^-*[0-9,\.]*$ * @type {?} */ AsiInputComponent.prototype.number; /** * Delay before the component change value * @type {?} */ AsiInputComponent.prototype.delay; /** @type {?} */ AsiInputComponent.prototype.inputControl; /** @type {?} */ AsiInputComponent.prototype.inputElm; /** @type {?} */ AsiInputComponent.prototype.renderer; /** @type {?} */ AsiInputComponent.prototype.elementRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhc2ktbmd0b29scy9saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9hc2ktaW5wdXQvYXNpLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQXlCLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDOztJQWNILDZDQUEyQjtJQWlDaEUsMkJBQW9CLFFBQW1CLEVBQzdCO1FBRFYsWUFFRSxpQkFBTyxTQUNSO1FBSG1CLGNBQVEsR0FBUixRQUFRLENBQVc7UUFDN0IsZ0JBQVUsR0FBVixVQUFVOzs7O3FCQTNCaUIsTUFBTTs7Ozs4QkFLb0QsS0FBSzs7Ozs0QkFHN0UsRUFBRTs7OzswQkFNSixDQUFDLENBQUM7Ozs7dUJBR0wsS0FBSzs7OztzQkFHTixDQUFDOzZCQUVILElBQUksV0FBVyxFQUFFOztLQU8vQjs7OztJQUVELG9DQUFROzs7SUFBUjtRQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckYsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FB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QUFLO3lCQUdMLEtBQUs7d0JBR0wsS0FBSzsyQkFJTCxTQUFTLFNBQUMsVUFBVTs7NEJBakR2QjtFQWtCdUMsMkJBQTJCO1NBQXJELGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlZmF1bHRDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJy4vLi4vY29tbW9uL2RlZmF1bHQtY29udHJvbC12YWx1ZS1hY2Nlc3Nvcic7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgKiBhcyBuaCBmcm9tICcuLi8uLi9uYXRpdmUtaGVscGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXNpLWlucHV0JyxcbiAgaG9zdDogeyAnY2xhc3MnOiAnYXNpLWNvbXBvbmVudCBhc2ktaW5wdXQnIH0sXG4gIHRlbXBsYXRlVXJsOiAnYXNpLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBc2lJbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBc2lJbnB1dENvbXBvbmVudCBleHRlbmRzIERlZmF1bHRDb250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgLyoqIGh0bWwgaWQgKi9cbiAgQElucHV0KCkgaWQ6IHN0cmluZztcbiAgLyoqIGh0bWwgbmFtZSAqL1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG4gIC8qKiBodG1sIGlucHV0IHR5cGUgKi9cbiAgQElucHV0KCkgdHlwZTogJ3Bhc3N3b3JkJyB8ICd0ZXh0JyA9ICd0ZXh0JztcblxuICAvKiogTGFiZWwgdG8gZGlzcGxheSAoaXMgdHJhbnNsYXRlZCkqL1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuICAvKiogTGFiZWwgcG9zaXRpb24gKi9cbiAgQElucHV0KCkgbGFiZWxQb3NpdGlvbjogJ3RvcCcgfCAnbGVmdCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgfCAnYm90dG9tLWNlbnRlcicgfCAndG9wLWNlbnRlcicgPSAndG9wJztcblxuICAvKiogcGxhY2Vob2xkZXIgKGlzIHRyYW5zbGF0ZWQpICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG5cbiAgLyoqIEFsbG93IHlvdSB0byBkZWZpbmUgYSByZWdleCB0aGF0IHRoZSBpbnB1dCBtdXN0IHJlc3BlY3QgKi9cbiAgQElucHV0KCkgcGF0dGVybjogUmVnRXhwO1xuXG4gIC8qKiBNYXggbGVuZ3RoIG9mIHRoZSB0ZXh0ICovXG4gIEBJbnB1dCgpIG1heGxlbmd0aCA9IC0xO1xuXG4gIC8qKiBNdXN0IGJlIGEgbnVtYmVyIChpbnRlcm5hbHkgc2V0IHRoZSByZWdleCB0byBeLSpbMC05LFxcLl0qJCAqL1xuICBASW5wdXQoKSBudW1iZXIgPSBmYWxzZTtcblxuICAvKiogRGVsYXkgYmVmb3JlIHRoZSBjb21wb25lbnQgY2hhbmdlIHZhbHVlICovXG4gIEBJbnB1dCgpIGRlbGF5ID0gMDtcblxuICBpbnB1dENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcblxuICBAVmlld0NoaWxkKCdhc2lJbnB1dCcpIGlucHV0RWxtOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2xhYmVsLScgKyB0aGlzLmxhYmVsUG9zaXRpb24pO1xuICAgIGlmICh0aGlzLm51bWJlcikge1xuICAgICAgdGhpcy5wYXR0ZXJuID0gbmV3IFJlZ0V4cCgnXi0qWzAtOSxcXC5dKiQnKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5pbnB1dENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVsYXkpKS5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNWYWxpZGUodmFsdWUpKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXhsZW5ndGggIT09IC0xICYmIHZhbHVlLmxlbmd0aCA+IHRoaXMubWF4bGVuZ3RoKSB7XG4gICAgICAgIC8vIGlmIHZhbHVlIGlzIHRvbyBsb25nLCB3ZSB0cnVuY2F0ZVxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWUuc3Vic3RyKDAsIHRoaXMubWF4bGVuZ3RoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW5wdXRFbG0ubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuX3ZhbHVlO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkZSh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHZhbHVlID09IG51bGwgfHwgKCh0aGlzLm1heGxlbmd0aCA9PT0gLTEgfHwgdmFsdWUubGVuZ3RoIDw9IHRoaXMubWF4bGVuZ3RoKVxuICAgICAgJiYgKHRoaXMucGF0dGVybiA9PSBudWxsIHx8IHRoaXMucGF0dGVybi50ZXN0KHZhbHVlKSkpXG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5pc1ZhbGlkZSh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1heGxlbmd0aCAhPT0gLTEgJiYgdmFsdWUubGVuZ3RoID4gdGhpcy5tYXhsZW5ndGgpIHtcbiAgICAgIC8vIExlbmd0aCBpbmNvcnJlY3Qgb24gdHJ1bmNhdGVcbiAgICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKG5oLnRydW5jYXRlKHZhbHVlLCB0aGlzLm1heGxlbmd0aCksIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUGF0dGVybiBpbmNvcnJlY3RcbiAgICAgIHRoaXMuaW5wdXRFbG0ubmF0aXZlRWxlbWVudC52YWx1ZSA9ICdJbmNvcnJlY3QgdmFsdWUnO1xuICAgIH1cbiAgfVxufVxuIl19