@jcbautistam/custom-table
Version:
Librería de tabla reutilizable con acciones, filtros, exportación y más.
109 lines • 13.1 kB
JavaScript
import { Directive, ElementRef, HostListener, Input, forwardRef, Renderer2 } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { FormatNumberService } from '../Services/formatNumber.Service';
import * as i0 from "@angular/core";
import * as i1 from "../Services/formatNumber.Service";
export class OnlyDigitDirective {
set format(value) {
this._format = value?.toLowerCase() || '';
}
get format() {
return this._format;
}
set showZero(value) {
this._showZero = (value == 'true') ? true : false;
}
get showZero() {
return this._showZero;
}
constructor(el, renderer, formatNumberService) {
this.el = el;
this.renderer = renderer;
this.formatNumberService = formatNumberService;
this._format = '';
this._showZero = true;
this.onChange = () => { };
this.onTouched = () => { };
this.renderer.addClass(this.el.nativeElement, 'text-end');
}
ngOnInit() {
this.writeValue(this.el.nativeElement.value); // Establecer el valor inicial con el formato
}
ngOnChanges(changes) {
if (changes['format']) {
this.writeValue(this.el.nativeElement.value); // Actualizar el valor con el nuevo formato
}
}
writeValue(value) {
if (value == null || isNaN(value) || value === "")
return;
let formattedValue = value;
if (this.format != 'id') {
formattedValue = this.formatNumberService.formatNumber(value, this.format);
}
this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue); // Asignar el valor formateado al campo
}
registerOnChange(fn) {
this.onChange = fn;
}
registerOnTouched(fn) {
this.onTouched = fn;
}
setDisabledState(isDisabled) {
this.renderer.setProperty(this.el.nativeElement, 'disabled', isDisabled);
}
onInput(value) {
if (value == null)
return;
let formattedValue = value;
if (this.format != 'id') {
formattedValue = this.formatNumberService.formatNumber(formattedValue, this.format);
}
else {
formattedValue = formattedValue.replace(/[^0-9-]*/g, '');
}
this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);
if (this.onChange) {
const numericValue = parseFloat(formattedValue.replace(/[^0-9.-]*/g, ''));
this.onChange(isNaN(numericValue) ? null : numericValue);
}
}
onBlur() {
if (this.onTouched) {
this.onTouched();
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: OnlyDigitDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.FormatNumberService }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: OnlyDigitDirective, selector: "[onlyDigit]", inputs: { format: ["onlyDigit", "format"], showZero: "showZero" }, host: { listeners: { "input": "onInput($event.target.value)", "blur": "onBlur()" } }, providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => OnlyDigitDirective),
multi: true
}
], usesOnChanges: true, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: OnlyDigitDirective, decorators: [{
type: Directive,
args: [{
selector: '[onlyDigit]',
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => OnlyDigitDirective),
multi: true
}
]
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.FormatNumberService }]; }, propDecorators: { format: [{
type: Input,
args: ['onlyDigit']
}], showZero: [{
type: Input
}], onInput: [{
type: HostListener,
args: ['input', ['$event.target.value']]
}], onBlur: [{
type: HostListener,
args: ['blur']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT25seURpZ2l0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2N1c3RvbS10YWJsZS9zcmMvbGliL0RpcmVjdGl2ZXMvT25seURpZ2l0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLFVBQVUsRUFDVixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFZdkUsTUFBTSxPQUFPLGtCQUFrQjtJQUk3QixJQUNJLE1BQU0sQ0FBQyxLQUFhO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUNJLFFBQVEsQ0FBQyxLQUFhO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUksQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUtELFlBQW9CLEVBQWMsRUFBVSxRQUFtQixFQUFVLG1CQUF3QztRQUE3RixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUF4QnpHLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFDckIsY0FBUyxHQUFZLElBQUksQ0FBQztR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O2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUM7Z0JBQ2pELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRjs7MkZBRVUsa0JBQWtCO2tCQVY5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7NEJBQ2pELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOzJKQU1LLE1BQU07c0JBRFQsS0FBSzt1QkFBQyxXQUFXO2dCQVVkLFFBQVE7c0JBRFgsS0FBSztnQkFxRE4sT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO2dCQXNCOUMsTUFBTTtzQkFETCxZQUFZO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIERpcmVjdGl2ZSxcclxuICBFbGVtZW50UmVmLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgZm9yd2FyZFJlZixcclxuICBSZW5kZXJlcjJcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGb3JtYXROdW1iZXJTZXJ2aWNlIH0gZnJvbSAnLi4vU2VydmljZXMvZm9ybWF0TnVtYmVyLlNlcnZpY2UnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbb25seURpZ2l0XScsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPbmx5RGlnaXREaXJlY3RpdmUpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE9ubHlEaWdpdERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgcHJpdmF0ZSBfZm9ybWF0OiBzdHJpbmcgPSAnJztcclxuICBwcml2YXRlIF9zaG93WmVybzogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgnb25seURpZ2l0JylcclxuICBzZXQgZm9ybWF0KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2Zvcm1hdCA9IHZhbHVlPy50b0xvd2VyQ2FzZSgpIHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZvcm1hdCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1hdDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNob3daZXJvKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3Nob3daZXJvID0gICh2YWx1ZSA9PSAndHJ1ZScpID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3daZXJvKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Nob3daZXJvO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuICBwcml2YXRlIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgZm9ybWF0TnVtYmVyU2VydmljZTogRm9ybWF0TnVtYmVyU2VydmljZSkge1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICd0ZXh0LWVuZCcpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLndyaXRlVmFsdWUodGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlKTsgLy8gRXN0YWJsZWNlciBlbCB2YWxvciBpbmljaWFsIGNvbiBlbCBmb3JtYXRvXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ2Zvcm1hdCddKSB7XHJcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQudmFsdWUpOyAvLyBBY3R1YWxpemFyIGVsIHZhbG9yIGNvbiBlbCBudWV2byBmb3JtYXRvXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gXCJcIikgcmV0dXJuO1xyXG5cclxuICAgIGxldCBmb3JtYXR0ZWRWYWx1ZSA9IHZhbHVlO1xyXG4gICBcclxuICAgIGlmICh0aGlzLmZvcm1hdCAhPSAnaWQnKSB7XHJcbiBcclxuICAgICAgZm9ybWF0dGVkVmFsdWUgPSB0aGlzLmZvcm1hdE51bWJlclNlcnZpY2UuZm9ybWF0TnVtYmVyKHZhbHVlLCB0aGlzLmZvcm1hdCk7XHJcbiAgICB9IFxyXG5cclxuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAndmFsdWUnLCBmb3JtYXR0ZWRWYWx1ZSk7IC8vIEFzaWduYXIgZWwgdmFsb3IgZm9ybWF0ZWFkbyBhbCBjYW1wb1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcsIGlzRGlzYWJsZWQpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnLCBbJyRldmVudC50YXJnZXQudmFsdWUnXSlcclxuICBvbklucHV0KHZhbHVlOiBzdHJpbmcpIHtcclxuXHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuO1xyXG5cclxuICAgIGxldCBmb3JtYXR0ZWRWYWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgIGlmICh0aGlzLmZvcm1hdCAhPSAnaWQnKSB7XHJcbiAgICAgIGZvcm1hdHRlZFZhbHVlID0gdGhpcy5mb3JtYXROdW1iZXJTZXJ2aWNlLmZvcm1hdE51bWJlcihmb3JtYXR0ZWRWYWx1ZSwgdGhpcy5mb3JtYXQpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIGZvcm1hdHRlZFZhbHVlID0gZm9ybWF0dGVkVmFsdWUucmVwbGFjZSgvW14wLTktXSovZywgJycpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAndmFsdWUnLCBmb3JtYXR0ZWRWYWx1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMub25DaGFuZ2UpIHtcclxuICAgICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gcGFyc2VGbG9hdChmb3JtYXR0ZWRWYWx1ZS5yZXBsYWNlKC9bXjAtOS4tXSovZywgJycpKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZShpc05hTihudW1lcmljVmFsdWUpID8gbnVsbCA6IG51bWVyaWNWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdibHVyJylcclxuICBvbkJsdXIoKSB7XHJcbiAgICBpZiAodGhpcy5vblRvdWNoZWQpIHtcclxuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59Il19