UNPKG

@douglas-serena/ng-inputs

Version:
113 lines 15 kB
import { Component, ElementRef, forwardRef, HostBinding, Input, Renderer2, ViewChild, } from '@angular/core'; import { CheckboxControlValueAccessor, ControlContainer, FormControlDirective, NG_VALUE_ACCESSOR, } from '@angular/forms'; import { NgInputConfigService } from './../core/ng-input-config.service'; export class NgCheckboxComponent extends CheckboxControlValueAccessor { constructor(controlContainer, elementRef, renderer, configService) { super(renderer, elementRef); this.controlContainer = controlContainer; this.elementRef = elementRef; this.renderer = renderer; this.configService = configService; this.label = 'Sem label: '; this.type = 'checkbox'; this.line = false; this.required = false; this.errors = {}; this.suffix = ''; this.prefix = ''; this._cols = { default: 12, }; this.readonly = false; } set cols(cols) { this._cols = Object.assign(Object.assign({}, this._cols), cols); } 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() { } 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))); } 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); } writeValue(value) { this.renderer.setProperty(this.elementRef.nativeElement, 'checked', value); } registerOnChange(fn) { this.onChange = fn; } registerOnTouched(fn) { this.onTouched = fn; } setDisabledState(isDisabled) { this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', isDisabled); } } NgCheckboxComponent.decorators = [ { type: Component, args: [{ selector: 'dss-checkbox', template: "<div\r\n class=\"form-group form-control-checkbox\"\r\n [class.form-switch]=\"type === 'switch'\"\r\n [class.form-check-inline]=\"line\"\r\n [ngClass]=\"{\r\n invalid: control.invalid && control.touched,\r\n valid: control.valid && control.touched\r\n }\"\r\n>\r\n <div\r\n class=\"form-content\"\r\n [class.switch]=\"type === 'switch' || type === 'button-switch'\"\r\n >\r\n <label\r\n class=\"form-check-label\"\r\n [class]=\"\r\n type === 'button-checkbox' || type === 'button-switch'\r\n ? 'btn btn-light w-100'\r\n : ''\r\n \"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input filled-in\"\r\n [formControl]=\"control\"\r\n [readonly]=\"readonly\"\r\n [class.is-invalid]=\"!readonly && control.invalid && control.touched\"\r\n [class.readonly]=\"readonly\"\r\n />\r\n <span [class.lever]=\"type === 'switch'\"> </span>\r\n {{ label }}\r\n </label>\r\n </div>\r\n\r\n <ng-container *ngFor=\"let error of getKeys(errors)\">\r\n <!-- MESSAGE ERROR -->\r\n <div *ngIf=\"getError(error)\" class=\"message error\">\r\n {{ errors[error] }}\r\n </div>\r\n </ng-container>\r\n\r\n <!-- MESSAGE HELp -->\r\n <div *ngIf=\"!!help\" class=\"message\">\r\n {{ help }}\r\n </div>\r\n</div>\r\n", host: { '(change)': 'onChange($event.target.checked)', '(blur)': 'onTouched()', }, providers: [ { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: forwardRef(() => NgCheckboxComponent), }, ], styles: [""] },] } ]; NgCheckboxComponent.ctorParameters = () => [ { type: ControlContainer }, { type: ElementRef }, { type: Renderer2 }, { type: NgInputConfigService } ]; NgCheckboxComponent.propDecorators = { label: [{ type: Input }], type: [{ type: Input }], line: [{ type: Input }], readonly: [{ type: Input }], required: [{ type: Input }], help: [{ type: Input }], errors: [{ type: Input }], suffix: [{ type: Input }], prefix: [{ type: Input }], cols: [{ type: Input }], classCols: [{ type: HostBinding, args: ['class',] }], formControlDirective: [{ type: ViewChild, args: [FormControlDirective, { static: true },] }], formControl: [{ type: Input }], formControlName: [{ type: Input }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctaW5wdXRzL3NyYy9saWIvbmctY2hlY2tib3gvbmctY2hlY2tib3guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLFNBQVMsRUFDVCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLDRCQUE0QixFQUM1QixnQkFBZ0IsRUFFaEIsb0JBQW9CLEVBQ3BCLGlCQUFpQixHQUNsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBcUJ6RSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsNEJBQTRCO0lBaURuRSxZQUNVLGdCQUFrQyxFQUNsQyxVQUFzQixFQUN0QixRQUFtQixFQUNwQixhQUFtQztRQUUxQyxLQUFLLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBTHBCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ3BCLGtCQUFhLEdBQWIsYUFBYSxDQUFzQjtRQXBEbkMsVUFBSyxHQUFXLGFBQWEsQ0FBQztRQUM5QixTQUFJLEdBQ1gsVUFBVSxDQUFDO1FBQ0osU0FBSSxHQUFZLEtBQUssQ0FBQztRQUd0QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRzFCLFdBQU0sR0FBWSxFQUFFLENBQUM7UUFFckIsV0FBTSxHQUFXLEVBQUUsQ0FBQztRQUNwQixXQUFNLEdBQVcsRUFBRSxDQUFDO1FBRTdCLFVBQUssR0FBK0Q7WUFDbEUsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDO1FBdUNBLElBQUksQ0FBQyxR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eEI7Z0JBQ0QsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLEtBQUssRUFBRSxJQUFJO3dCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7cUJBQ25EO2lCQUNGOzthQUNGOzs7WUF6QkMsZ0JBQWdCO1lBVGhCLFVBQVU7WUFJVixTQUFTO1lBVUYsb0JBQW9COzs7b0JBc0IxQixLQUFLO21CQUNMLEtBQUs7bUJBRUwsS0FBSzt1QkFFTCxLQUFLO3VCQUNMLEtBQUs7bUJBQ0wsS0FBSztxQkFFTCxLQUFLO3FCQUVMLEtBQUs7cUJBQ0wsS0FBSzttQkFLTCxLQUFLO3dCQVFMLFdBQVcsU0FBQyxPQUFPO21DQXlDbkIsU0FBUyxTQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTswQkFFaEQsS0FBSzs4QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBmb3J3YXJkUmVmLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ2hlY2tib3hDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBDb250cm9sQ29udGFpbmVyLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Db250cm9sRGlyZWN0aXZlLFxyXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmdJbnB1dENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLy4uL2NvcmUvbmctaW5wdXQtY29uZmlnLnNlcnZpY2UnO1xyXG5cclxuaW50ZXJmYWNlIElPYmplY3Qge1xyXG4gIFtrZXk6IHN0cmluZ106IHN0cmluZztcclxufVxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Rzcy1jaGVja2JveCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25nLWNoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9uZy1jaGVja2JveC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGhvc3Q6IHtcclxuICAgICcoY2hhbmdlKSc6ICdvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LmNoZWNrZWQpJyxcclxuICAgICcoYmx1ciknOiAnb25Ub3VjaGVkKCknLFxyXG4gIH0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmdDaGVja2JveENvbXBvbmVudCksXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ0NoZWNrYm94Q29tcG9uZW50IGV4dGVuZHMgQ2hlY2tib3hDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICdTZW0gbGFiZWw6ICc7XHJcbiAgQElucHV0KCkgdHlwZTogJ2NoZWNrYm94JyB8ICdzd2l0Y2gnIHwgJ2J1dHRvbi1jaGVja2JveCcgfCAnYnV0dG9uLXN3aXRjaCcgPVxyXG4gICAgJ2NoZWNrYm94JztcclxuICBASW5wdXQoKSBsaW5lOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaGVscD86IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgZXJyb3JzOiBJT2JqZWN0ID0ge307XHJcblxyXG4gIEBJbnB1dCgpIHN1ZmZpeDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgcHJlZml4OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgX2NvbHM6IHsgZGVmYXVsdDogbnVtYmVyOyBsZz86IG51bWJlcjsgbWQ/OiBudW1iZXI7IHNtPzogbnVtYmVyIH0gPSB7XHJcbiAgICBkZWZhdWx0OiAxMixcclxuICB9O1xyXG4gIEBJbnB1dCgpIHNldCBjb2xzKGNvbHM6IHtcclxuICAgIGRlZmF1bHQ/OiBudW1iZXI7XHJcbiAgICBsZz86IG51bWJlcjtcclxuICAgIG1kPzogbnVtYmVyO1xyXG4gICAgc20/OiBudW1iZXI7XHJcbiAgfSkge1xyXG4gICAgdGhpcy5fY29scyA9IHsgLi4udGhpcy5fY29scywgLi4uY29scyB9O1xyXG4gIH1cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZ2V0IGNsYXNzQ29scygpIHtcclxuICAgIGxldCBjbGFzc05hbWUgPVxyXG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UudGhlbWUgPT09ICdib290c3RyYXAnXHJcbiAgICAgICAgPyBgY29sLSR7dGhpcy5fY29scy5kZWZhdWx0fWBcclxuICAgICAgICA6IGBjb2xgO1xyXG4gICAgaWYgKHRoaXMuX2NvbHMubGcpXHJcbiAgICAgIGNsYXNzTmFtZSArPVxyXG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS50aGVtZSA9PT0gJ2Jvb3RzdHJhcCdcclxuICAgICAgICAgID8gYCBjb2wtbGctJHt0aGlzLl9jb2xzLmxnfWBcclxuICAgICAgICAgIDogYCBsJHt0aGlzLl9jb2xzLmxnfWA7XHJcbiAgICBpZiAodGhpcy5fY29scy5tZClcclxuICAgICAgY2xhc3NOYW1lICs9XHJcbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLnRoZW1lID09PSAnYm9vdHN0cmFwJ1xyXG4gICAgICAgICAgPyBgIGNvbC1tZC0ke3RoaXMuX2NvbHMubWR9YFxyXG4gICAgICAgICAgOiBgIG0ke3RoaXMuX2NvbHMubWR9YDtcclxuICAgIGlmICh0aGlzLl9jb2xzLnNtKVxyXG4gICAgICBjbGFzc05hbWUgKz1cclxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UudGhlbWUgPT09ICdib290c3RyYXAnXHJcbiAgICAgICAgICA/IGAgY29sLXNtLSR7dGhpcy5fY29scy5zbX1gXHJcbiAgICAgICAgICA6IGAgcyR7dGhpcy5fY29scy5zbX1gO1xyXG4gICAgcmV0dXJuIGNsYXNzTmFtZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IE5nSW5wdXRDb25maWdTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihyZW5kZXJlciwgZWxlbWVudFJlZik7XHJcbiAgICB0aGlzLnJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHt9XHJcblxyXG4gIC8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXHJcblxyXG4gIC8vIEFUVFJJQlVURSBBTkQgTUVUSE9EUyBDT05UUk9MXHJcblxyXG4gIC8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXHJcblxyXG4gIEBWaWV3Q2hpbGQoRm9ybUNvbnRyb2xEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgZm9ybUNvbnRyb2xEaXJlY3RpdmU6IEZvcm1Db250cm9sRGlyZWN0aXZlO1xyXG4gIEBJbnB1dCgpIGZvcm1Db250cm9sOiBGb3JtQ29udHJvbDtcclxuICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWU6IHN0cmluZztcclxuXHJcbiAgZ2V0IGNvbnRyb2woKTogRm9ybUNvbnRyb2wge1xyXG4gICAgcmV0dXJuICh0aGlzLmZvcm1Db250cm9sIHx8XHJcbiAgICAgIHRoaXMuY29udHJvbENvbnRhaW5lcj8uY29udHJvbD8uZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKSkgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBnZXRLZXlzKGVycm9yczogSU9iamVjdCkge1xyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGVycm9ycyk7XHJcbiAgfVxyXG4gIGdldEVycm9yKGtleTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sPy5lcnJvcnM/LltrZXldICYmIHRoaXMuY29udHJvbD8udG91Y2hlZDtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NoZWNrZWQnLCB2YWx1ZSk7XHJcbiAgfVxyXG4gIG9uQ2hhbmdlOiAoXzogYW55KSA9PiB7fTtcclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB7fSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuICBvblRvdWNoZWQ6ICgpID0+IHt9O1xyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShcclxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICdkaXNhYmxlZCcsXHJcbiAgICAgIGlzRGlzYWJsZWRcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==