UNPKG

@jcbautistam/custom-table

Version:

Librería de tabla reutilizable con acciones, filtros, exportación y más.

86 lines 11.8 kB
import { Directive, ElementRef, HostListener } from '@angular/core'; import { NgControl } from '@angular/forms'; import * as i0 from "@angular/core"; import * as i1 from "@angular/forms"; export class TimeInputDirective { constructor(el, control) { this.el = el; this.control = control; } ngOnInit() { let value = this.control.value.replace(/[^0-9]/g, ''); // Elimina todos los caracteres no numéricos if (value.length > 4) { value = value.slice(0, 4); // Limita la longitud de la entrada a 4 dígitos } let hours = value.slice(0, 2); let minutes = value.slice(2, 4); let formattedValue = hours; if (minutes.length > 0) { formattedValue += ':' + minutes; } this.control.control?.setValue(formattedValue); } onInputChange(event) { const input = event.target; let value = input.value.replace(/[^0-9]/g, ''); // Elimina todos los caracteres no numéricos if (value.length > 4) { value = value.slice(0, 4); // Limita la longitud de la entrada a 4 dígitos } let hours = value.slice(0, 2); let minutes = value.slice(2, 4); if (hours.length === 2 && parseInt(hours) > 23) { hours = '23'; // Limita las horas a un máximo de 23 } if (minutes.length === 2 && parseInt(minutes) > 59) { minutes = '59'; // Limita los minutos a un máximo de 59 } let formattedValue = hours; if (minutes.length > 0) { formattedValue += ':' + minutes; } input.value = formattedValue; this.control.control?.setValue(formattedValue); } onKeyDown(event) { const input = event.target; const value = input.value; // Permite borrar ":" con la tecla Backspace if (event.key === 'Backspace' && input.selectionStart === input.selectionEnd) { const position = input.selectionStart || 0; if (position === 3) { input.value = value.slice(0, 2); input.setSelectionRange(2, 2); event.preventDefault(); } } // Permite saltar ":" con las teclas de flecha if ((event.key === 'ArrowLeft' || event.key === 'ArrowRight') && input.selectionStart === input.selectionEnd) { const position = input.selectionStart || 0; if (position === 2 && event.key === 'ArrowRight') { input.setSelectionRange(3, 3); event.preventDefault(); } if (position === 3 && event.key === 'ArrowLeft') { input.setSelectionRange(2, 2); event.preventDefault(); } } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: TimeInputDirective, deps: [{ token: i0.ElementRef }, { token: i1.NgControl }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.2", type: TimeInputDirective, selector: "[timeInput]", host: { listeners: { "input": "onInputChange($event)", "keydown": "onKeyDown($event)" } }, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: TimeInputDirective, decorators: [{ type: Directive, args: [{ selector: '[timeInput]', }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.NgControl }]; }, propDecorators: { onInputChange: [{ type: HostListener, args: ['input', ['$event']] }], onKeyDown: [{ type: HostListener, args: ['keydown', ['$event']] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGltZUlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2N1c3RvbS10YWJsZS9zcmMvbGliL0RpcmVjdGl2ZXMvVGltZUlucHV0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBS2pFLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFBb0IsRUFBYyxFQUFVLE9BQWtCO1FBQTFDLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFXO0lBQUcsQ0FBQztJQUVsRSxRQUFRO1FBQ04sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLDRDQUE0QztRQUVuRyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLCtDQUErQztTQUMzRTtRQUVELElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlCLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRWhDLElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3RCLGNBQWMsSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVB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QUM7Z0JBQzlCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUN4QjtTQUNGO0lBQ0gsQ0FBQzs4R0FwRlUsa0JBQWtCO2tHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSDlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7aUJBQ3hCO3lIQXNCb0MsYUFBYTtzQkFBL0MsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBNEJJLFNBQVM7c0JBQTdDLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3RpbWVJbnB1dF0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGltZUlucHV0RGlyZWN0aXZlIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIGNvbnRyb2w6IE5nQ29udHJvbCkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmNvbnRyb2wudmFsdWUucmVwbGFjZSgvW14wLTldL2csICcnKTsgLy8gRWxpbWluYSB0b2RvcyBsb3MgY2FyYWN0ZXJlcyBubyBudW3DqXJpY29zXHJcblxyXG4gICAgaWYgKHZhbHVlLmxlbmd0aCA+IDQpIHtcclxuICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgwLCA0KTsgLy8gTGltaXRhIGxhIGxvbmdpdHVkIGRlIGxhIGVudHJhZGEgYSA0IGTDrWdpdG9zXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGhvdXJzID0gdmFsdWUuc2xpY2UoMCwgMik7XHJcbiAgICBsZXQgbWludXRlcyA9IHZhbHVlLnNsaWNlKDIsIDQpO1xyXG5cclxuICAgIGxldCBmb3JtYXR0ZWRWYWx1ZSA9IGhvdXJzO1xyXG4gICAgaWYgKG1pbnV0ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3JtYXR0ZWRWYWx1ZSArPSAnOicgKyBtaW51dGVzO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29udHJvbC5jb250cm9sPy5zZXRWYWx1ZShmb3JtYXR0ZWRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdpbnB1dCcsIFsnJGV2ZW50J10pIG9uSW5wdXRDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgbGV0IHZhbHVlID0gaW5wdXQudmFsdWUucmVwbGFjZSgvW14wLTldL2csICcnKTsgLy8gRWxpbWluYSB0b2RvcyBsb3MgY2FyYWN0ZXJlcyBubyBudW3DqXJpY29zXHJcblxyXG4gICAgaWYgKHZhbHVlLmxlbmd0aCA+IDQpIHtcclxuICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgwLCA0KTsgLy8gTGltaXRhIGxhIGxvbmdpdHVkIGRlIGxhIGVudHJhZGEgYSA0IGTDrWdpdG9zXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGhvdXJzID0gdmFsdWUuc2xpY2UoMCwgMik7XHJcbiAgICBsZXQgbWludXRlcyA9IHZhbHVlLnNsaWNlKDIsIDQpO1xyXG5cclxuICAgIGlmIChob3Vycy5sZW5ndGggPT09IDIgJiYgcGFyc2VJbnQoaG91cnMpID4gMjMpIHtcclxuICAgICAgaG91cnMgPSAnMjMnOyAvLyBMaW1pdGEgbGFzIGhvcmFzIGEgdW4gbcOheGltbyBkZSAyM1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChtaW51dGVzLmxlbmd0aCA9PT0gMiAmJiBwYXJzZUludChtaW51dGVzKSA+IDU5KSB7XHJcbiAgICAgIG1pbnV0ZXMgPSAnNTknOyAvLyBMaW1pdGEgbG9zIG1pbnV0b3MgYSB1biBtw6F4aW1vIGRlIDU5XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gaG91cnM7XHJcbiAgICBpZiAobWludXRlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvcm1hdHRlZFZhbHVlICs9ICc6JyArIG1pbnV0ZXM7XHJcbiAgICB9XHJcblxyXG4gICAgaW5wdXQudmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZTtcclxuICAgIHRoaXMuY29udHJvbC5jb250cm9sPy5zZXRWYWx1ZShmb3JtYXR0ZWRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSkgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgY29uc3QgdmFsdWUgPSBpbnB1dC52YWx1ZTtcclxuXHJcbiAgICAvLyBQZXJtaXRlIGJvcnJhciBcIjpcIiBjb24gbGEgdGVjbGEgQmFja3NwYWNlXHJcbiAgICBpZiAoXHJcbiAgICAgIGV2ZW50LmtleSA9PT0gJ0JhY2tzcGFjZScgJiZcclxuICAgICAgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT09IGlucHV0LnNlbGVjdGlvbkVuZFxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gaW5wdXQuc2VsZWN0aW9uU3RhcnQgfHwgMDtcclxuXHJcbiAgICAgIGlmIChwb3NpdGlvbiA9PT0gMykge1xyXG4gICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUuc2xpY2UoMCwgMik7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMiwgMik7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFBlcm1pdGUgc2FsdGFyIFwiOlwiIGNvbiBsYXMgdGVjbGFzIGRlIGZsZWNoYVxyXG4gICAgaWYgKFxyXG4gICAgICAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0JyB8fCBldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0JykgJiZcclxuICAgICAgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPT09IGlucHV0LnNlbGVjdGlvbkVuZFxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gaW5wdXQuc2VsZWN0aW9uU3RhcnQgfHwgMDtcclxuXHJcbiAgICAgIGlmIChwb3NpdGlvbiA9PT0gMiAmJiBldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xyXG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKDMsIDMpO1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChwb3NpdGlvbiA9PT0gMyAmJiBldmVudC5rZXkgPT09ICdBcnJvd0xlZnQnKSB7XHJcbiAgICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMiwgMik7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=