UNPKG

@douglas-serena/ng-inputs

Version:
134 lines 15.7 kB
import { ChangeDetectorRef } from '@angular/core'; import { Component, EventEmitter, HostBinding, Input, Output, ViewChild, } from '@angular/core'; import { ControlContainer, FormControlDirective, } from '@angular/forms'; import { NgInputConfigService } from '../core/ng-input-config.service'; export class InputCustomControlValueAccessor { constructor(_controlContainer, _configService, _changeDetectorRef) { this._controlContainer = _controlContainer; this._configService = _configService; this._changeDetectorRef = _changeDetectorRef; this.disabled = false; this.blur = new EventEmitter(); this.focus = new EventEmitter(); this._placeholder = ''; this.label = ''; this._cols = { default: 12, sm: 12, }; this._field = null; this.readonly = false; this.errors = {}; this.time = 0; } get placeholder() { return this._placeholder; } set placeholder(value) { this._placeholder = value; } set cols(cols) { this._cols = Object.assign(Object.assign({}, this._cols), cols); } set field(value) { this._field = value; } get field() { return this._field ? this._field : this._configService.field.type; } get control() { var _a, _b; return (this.formControl || ((_b = (_a = this._controlContainer) === null || _a === void 0 ? void 0 : _a.control) === null || _b === void 0 ? void 0 : _b.get(this.formControlName))); } get classCols() { let className = this._configService.theme === 'bootstrap' ? `col-${this._cols.default}` : `col`; if (this._cols.lg) className += this._configService.theme === 'bootstrap' ? ` col-lg-${this._cols.lg}` : ` l${this._cols.lg}`; if (this._cols.md) className += this._configService.theme === 'bootstrap' ? ` col-md-${this._cols.md}` : ` m${this._cols.md}`; if (this._cols.sm) className += this._configService.theme === 'bootstrap' ? ` col-sm-${this._cols.sm}` : ` s${this._cols.sm}`; return className; } ngOnInit() { this.ngOnInitSuper(); if (this.disabled) this.control.disable(); else this.control.enable(); } ngOnInitSuper() { if (this.name === undefined) this.name = this.formControlName; if (this.required === null) { const value = this.control.value; this.control.reset(); this.required = !!this.control.getError('required'); this.control.setValue(value); } } getKeys(errors) { return Object.keys(errors); } getError(key) { var _a, _b, _c; return ((_b = (_a = this.control) === null || _a === void 0 ? void 0 : _a.errors) === null || _b === void 0 ? void 0 : _b[key]) && ((_c = this.control) === null || _c === void 0 ? void 0 : _c.touched); } registerOnTouched(fn) { var _a; (_a = this.formControlDirective.valueAccessor) === null || _a === void 0 ? void 0 : _a.registerOnTouched(fn); } registerOnChange(fn) { this.onWrite = fn; } writeValue(obj) { clearTimeout(this.time); this.time = setTimeout(() => { this.onWrite(obj); }); } setDisabledState(isDisabled) { this.disabled = isDisabled; } } InputCustomControlValueAccessor.decorators = [ { type: Component, args: [{ selector: '', template: '' },] } ]; InputCustomControlValueAccessor.ctorParameters = () => [ { type: ControlContainer }, { type: NgInputConfigService }, { type: ChangeDetectorRef } ]; InputCustomControlValueAccessor.propDecorators = { formControlDirective: [{ type: ViewChild, args: [FormControlDirective, { static: true },] }], formControl: [{ type: Input }], formControlName: [{ type: Input }], name: [{ type: Input }], help: [{ type: Input }], disabled: [{ type: Input }], blur: [{ type: Output }], focus: [{ type: Output }], placeholder: [{ type: Input }], label: [{ type: Input }], cols: [{ type: Input }], field: [{ type: Input }], readonly: [{ type: Input }], required: [{ type: Input }], errors: [{ type: Input }], classCols: [{ type: HostBinding, args: ['class',] }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY3VzdG9tLWNvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZG9tYWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctaW5wdXRzL3NyYy9saWIvbmctaW5wdXQvaW5wdXQtY3VzdG9tLWNvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZG9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGdCQUFnQixFQUdoQixvQkFBb0IsR0FDckIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQVd2RSxNQUFNLE9BQU8sK0JBQStCO0lBaUYxQyxZQUNVLGlCQUFtQyxFQUNuQyxjQUFvQyxFQUNwQyxrQkFBcUM7UUFGckMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyxtQkFBYyxHQUFkLGNBQWMsQ0FBc0I7UUFDcEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQTNFdEMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUV6QixTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQixVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU3QixpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQVF6QixVQUFLLEdBQVcsRUFBRSxDQUFDO1FBQzVCLFVBQUssR0FBK0Q7WUFDbEUsT0FBTyxFQUFFLEVBQUU7WUFDWCxFQUFFLEVBQUUsRUFBRTtTQUNQLENBQUM7UUFVRixXQUFNLEdBQWdDLElBQUksQ0FBQztRQVVsQyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRzFCLFdBQU0sR0FB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QixTQUFTLFNBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOzBCQUVoRCxLQUFLOzhCQUNMLEtBQUs7bUJBQ0wsS0FBSzttQkFDTCxLQUFLO3VCQUNMLEtBQUs7bUJBRUwsTUFBTTtvQkFDTixNQUFNOzBCQU1OLEtBQUs7b0JBSUwsS0FBSzttQkFLTCxLQUFLO29CQVVMLEtBQUs7dUJBU0wsS0FBSzt1QkFDTCxLQUFLO3FCQUVMLEtBQUs7d0JBU0wsV0FBVyxTQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBDb250cm9sQ29udGFpbmVyLFxyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Db250cm9sRGlyZWN0aXZlLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmdJbnB1dENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi9jb3JlL25nLWlucHV0LWNvbmZpZy5zZXJ2aWNlJztcclxuXHJcbmludGVyZmFjZSBJT2JqZWN0IHtcclxuICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBJT25Xcml0ZSB7XHJcbiAgKHZhbHVlOiBhbnkpOiB2b2lkO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHsgc2VsZWN0b3I6ICcnLCB0ZW1wbGF0ZTogJycgfSlcclxuZXhwb3J0IGNsYXNzIElucHV0Q3VzdG9tQ29udHJvbFZhbHVlQWNjZXNzb3JcclxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXRcclxue1xyXG4gIEBWaWV3Q2hpbGQoRm9ybUNvbnRyb2xEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgZm9ybUNvbnRyb2xEaXJlY3RpdmU6IEZvcm1Db250cm9sRGlyZWN0aXZlO1xyXG4gIEBJbnB1dCgpIGZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcclxuICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWU6IHN0cmluZztcclxuICBASW5wdXQoKSBuYW1lPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGhlbHA/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIGJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwcml2YXRlIF9wbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICcnO1xyXG4gIF9jb2xzOiB7IGRlZmF1bHQ6IG51bWJlcjsgbGc/OiBudW1iZXI7IG1kPzogbnVtYmVyOyBzbT86IG51bWJlciB9ID0ge1xyXG4gICAgZGVmYXVsdDogMTIsXHJcbiAgICBzbTogMTIsXHJcbiAgfTtcclxuICBASW5wdXQoKSBzZXQgY29scyhjb2xzOiB7XHJcbiAgICBkZWZhdWx0PzogbnVtYmVyO1xyXG4gICAgbGc/OiBudW1iZXI7XHJcbiAgICBtZD86IG51bWJlcjtcclxuICAgIHNtPzogbnVtYmVyO1xyXG4gIH0pIHtcclxuICAgIHRoaXMuX2NvbHMgPSB7IC4uLnRoaXMuX2NvbHMsIC4uLmNvbHMgfTtcclxuICB9XHJcblxyXG4gIF9maWVsZDogbnVsbCB8ICdncm91cCcgfCAnZmxvYXRpbmcnID0gbnVsbDtcclxuICBASW5wdXQoKSBzZXQgZmllbGQodmFsdWU6ICdncm91cCcgfCAnZmxvYXRpbmcnKSB7XHJcbiAgICB0aGlzLl9maWVsZCA9IHZhbHVlO1xyXG4gIH1cclxuICBnZXQgZmllbGQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmllbGRcclxuICAgICAgPyB0aGlzLl9maWVsZFxyXG4gICAgICA6ICh0aGlzLl9jb25maWdTZXJ2aWNlLmZpZWxkLnR5cGUgYXMgJ2dyb3VwJyB8ICdmbG9hdGluZycpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSByZXF1aXJlZD86IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpIGVycm9yczogSU9iamVjdCA9IHt9O1xyXG5cclxuICBnZXQgY29udHJvbCgpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gKHRoaXMuZm9ybUNvbnRyb2wgfHxcclxuICAgICAgdGhpcy5fY29udHJvbENvbnRhaW5lcj8uY29udHJvbD8uZ2V0KFxyXG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2xOYW1lXHJcbiAgICAgICkpIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGdldCBjbGFzc0NvbHMoKSB7XHJcbiAgICBsZXQgY2xhc3NOYW1lID1cclxuICAgICAgdGhpcy5fY29uZmlnU2VydmljZS50aGVtZSA9PT0gJ2Jvb3RzdHJhcCdcclxuICAgICAgICA/IGBjb2wtJHt0aGlzLl9jb2xzLmRlZmF1bHR9YFxyXG4gICAgICAgIDogYGNvbGA7XHJcbiAgICBpZiAodGhpcy5fY29scy5sZylcclxuICAgICAgY2xhc3NOYW1lICs9XHJcbiAgICAgICAgdGhpcy5fY29uZmlnU2VydmljZS50aGVtZSA9PT0gJ2Jvb3RzdHJhcCdcclxuICAgICAgICAgID8gYCBjb2wtbGctJHt0aGlzLl9jb2xzLmxnfWBcclxuICAgICAgICAgIDogYCBsJHt0aGlzLl9jb2xzLmxnfWA7XHJcbiAgICBpZiAodGhpcy5fY29scy5tZClcclxuICAgICAgY2xhc3NOYW1lICs9XHJcbiAgICAgICAgdGhpcy5fY29uZmlnU2VydmljZS50aGVtZSA9PT0gJ2Jvb3RzdHJhcCdcclxuICAgICAgICAgID8gYCBjb2wtbWQtJHt0aGlzLl9jb2xzLm1kfWBcclxuICAgICAgICAgIDogYCBtJHt0aGlzLl9jb2xzLm1kfWA7XHJcbiAgICBpZiAodGhpcy5fY29scy5zbSlcclxuICAgICAgY2xhc3NOYW1lICs9XHJcbiAgICAgICAgdGhpcy5fY29uZmlnU2VydmljZS50aGVtZSA9PT0gJ2Jvb3RzdHJhcCdcclxuICAgICAgICAgID8gYCBjb2wtc20tJHt0aGlzLl9jb2xzLnNtfWBcclxuICAgICAgICAgIDogYCBzJHt0aGlzLl9jb2xzLnNtfWA7XHJcbiAgICByZXR1cm4gY2xhc3NOYW1lO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9jb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxyXG4gICAgcHJpdmF0ZSBfY29uZmlnU2VydmljZTogTmdJbnB1dENvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5uZ09uSW5pdFN1cGVyKCk7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgdGhpcy5jb250cm9sLmRpc2FibGUoKTtcclxuICAgIGVsc2UgdGhpcy5jb250cm9sLmVuYWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG5nT25Jbml0U3VwZXIoKSB7XHJcbiAgICBpZiAodGhpcy5uYW1lID09PSB1bmRlZmluZWQpIHRoaXMubmFtZSA9IHRoaXMuZm9ybUNvbnRyb2xOYW1lO1xyXG5cclxuICAgIGlmICh0aGlzLnJlcXVpcmVkID09PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jb250cm9sLnZhbHVlO1xyXG4gICAgICB0aGlzLmNvbnRyb2wucmVzZXQoKTtcclxuICAgICAgdGhpcy5yZXF1aXJlZCA9ICEhdGhpcy5jb250cm9sLmdldEVycm9yKCdyZXF1aXJlZCcpO1xyXG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0S2V5cyhlcnJvcnM6IElPYmplY3QpIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhlcnJvcnMpO1xyXG4gIH1cclxuICBnZXRFcnJvcihrZXk6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbD8uZXJyb3JzPy5ba2V5XSAmJiB0aGlzLmNvbnRyb2w/LnRvdWNoZWQ7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sRGlyZWN0aXZlLnZhbHVlQWNjZXNzb3I/LnJlZ2lzdGVyT25Ub3VjaGVkKGZuKTtcclxuICB9XHJcblxyXG4gIG9uV3JpdGU6IElPbldyaXRlO1xyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IElPbldyaXRlKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uV3JpdGUgPSBmbjtcclxuICB9XHJcblxyXG4gIHRpbWU6IGFueSA9IDA7XHJcbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZSk7XHJcbiAgICB0aGlzLnRpbWUgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5vbldyaXRlKG9iaik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==