@douglas-serena/ng-inputs
Version:
angular entry library
134 lines • 15.7 kB
JavaScript
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==