ng-components-tsi 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -0
- package/fesm2022/ng-components-tsi.mjs +4111 -0
- package/fesm2022/ng-components-tsi.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/directivas/acciones/atajos.directive.d.ts +8 -0
- package/lib/directivas/animaciones/fade-animation.d.ts +3 -0
- package/lib/directivas/estilos/button.constants.d.ts +61 -0
- package/lib/directivas/estilos/buttons-modal.directive.d.ts +11 -0
- package/lib/directivas/estilos/buttons-outline-directive.d.ts +11 -0
- package/lib/directivas/estilos/icons.directive.d.ts +11 -0
- package/lib/directivas/inputs/decimal.directive.d.ts +14 -0
- package/lib/directivas/inputs/only-day.directive.d.ts +8 -0
- package/lib/directivas/inputs/only-number.directive.d.ts +8 -0
- package/lib/directivas/utils/configuracion-sistema/factores.d.ts +272 -0
- package/lib/directivas/utils/configuracion-sistema/permisos.d.ts +196 -0
- package/lib/directivas/utils/general/funciones.d.ts +32 -0
- package/lib/directivas/utils/general/utilidades.d.ts +47 -0
- package/lib/directivas/utils/general/validaciones.d.ts +18 -0
- package/lib/modals/general/md-generico/md-generico.component.d.ts +22 -0
- package/lib/models/button-color.model.d.ts +3 -0
- package/lib/models/button-properties.model.d.ts +7 -0
- package/lib/models/cell-rendered.d.ts +10 -0
- package/lib/models/dropdownoption.model.d.ts +17 -0
- package/lib/models/input-config.d.ts +23 -0
- package/lib/models/sesion/almacen-sesion.model.d.ts +19 -0
- package/lib/models/sesion/documento-tipo-sesion.model.d.ts +12 -0
- package/lib/models/sesion/inventario-sesion.model.d.ts +16 -0
- package/lib/models/sesion/tipo-afectacion.model.d.ts +5 -0
- package/lib/models/sesion/titulo-listas.model.d.ts +19 -0
- package/lib/models/sesion/unidades-sesion.model.d.ts +13 -0
- package/lib/models/table-data.model.d.ts +16 -0
- package/lib/service/sesion.service.d.ts +41 -0
- package/lib/service/storage.service.d.ts +26 -0
- package/lib/service/toast.service.d.ts +21 -0
- package/lib/ui/alerts/alert-confirmation/alert-confirmation.component.d.ts +31 -0
- package/lib/ui/alerts/alert-fecha-emision/alert-fecha-emision.component.d.ts +9 -0
- package/lib/ui/alerts/alerta/alerta.component.d.ts +7 -0
- package/lib/ui/alerts/badge/badge.component.d.ts +8 -0
- package/lib/ui/alerts/toaster/toaster.component.d.ts +18 -0
- package/lib/ui/dropdown/dropdown-cdk/dropdown-cdk.component.d.ts +11 -0
- package/lib/ui/dropdown/dropdown-simple/dropdown.component.d.ts +13 -0
- package/lib/ui/forms/button/button.component.d.ts +40 -0
- package/lib/ui/forms/header/header.component.d.ts +21 -0
- package/lib/ui/forms/inputs/autocomplete/autocomplete.component.d.ts +43 -0
- package/lib/ui/forms/inputs/autocomplete-cdk/autocomplete.component.d.ts +48 -0
- package/lib/ui/forms/inputs/check-box/check-box.component.d.ts +11 -0
- package/lib/ui/forms/inputs/doble-input/doble-input.component.d.ts +42 -0
- package/lib/ui/forms/inputs/input/input.component.d.ts +50 -0
- package/lib/ui/forms/inputs/input-clase/input-clase.component.d.ts +13 -0
- package/lib/ui/forms/inputs/input-dinamico/input-dinamico.component.d.ts +8 -0
- package/lib/ui/forms/inputs/input-radio/input-radio.component.d.ts +24 -0
- package/lib/ui/forms/inputs/multiselected/multiselected.component.d.ts +39 -0
- package/lib/ui/forms/inputs/radio/radio.component.d.ts +14 -0
- package/lib/ui/forms/inputs/switch/switch.component.d.ts +20 -0
- package/lib/ui/forms/lists/list-option/list-option.component.d.ts +23 -0
- package/lib/ui/forms/lists/list-situaciones/list-situaciones.component.d.ts +31 -0
- package/lib/ui/forms/lists/multi-select-dropdown/multi-select-dropdown.component.d.ts +26 -0
- package/lib/ui/forms/sidebar/sidebar.component.d.ts +15 -0
- package/lib/ui/general/detalle-credito/detalle-credito.component.d.ts +7 -0
- package/lib/ui/general/montos-calcular/montos-calcular.component.d.ts +10 -0
- package/lib/ui/general/spinner/spinner.component.d.ts +5 -0
- package/lib/ui/tables/card-mobile/card-mobile.component.d.ts +17 -0
- package/lib/ui/tables/dropdown-menu/dropdown-menu.component.d.ts +35 -0
- package/lib/ui/tables/paginador/paginador.component.d.ts +12 -0
- package/lib/ui/tables/table-advance/table-advance.component.d.ts +80 -0
- package/lib/ui/tables/table-advance-optimizada/table-advance-optimizada.component.d.ts +80 -0
- package/lib/ui/tables/table-busqueda/table-busqueda.component.d.ts +48 -0
- package/lib/ui/tables/table-detalle/table-detalle.component.d.ts +59 -0
- package/lib/ui/tables/table-simple/table-simple.component.d.ts +39 -0
- package/lib/ui/tabs/nav-tabs/nav-tabs.component.d.ts +9 -0
- package/lib/ui/tabs/tab-item/tab-item.component.d.ts +9 -0
- package/ng-components-tsi-0.0.1.tgz +0 -0
- package/package.json +29 -0
- package/public-api.d.ts +37 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ng-components-tsi.mjs","sources":["../../../projects/ng-components-tsi/src/lib/directivas/acciones/atajos.directive.ts","../../../projects/ng-components-tsi/src/lib/directivas/estilos/button.constants.ts","../../../projects/ng-components-tsi/src/lib/ui/forms/button/button.component.ts","../../../projects/ng-components-tsi/src/lib/ui/forms/button/button.component.html","../../../projects/ng-components-tsi/src/lib/service/toast.service.ts","../../../projects/ng-components-tsi/src/lib/ui/alerts/alert-confirmation/alert-confirmation.component.ts","../../../projects/ng-components-tsi/src/lib/ui/alerts/alert-confirmation/alert-confirmation.component.html","../../../projects/ng-components-tsi/src/lib/directivas/utils/general/funciones.ts","../../../projects/ng-components-tsi/src/lib/directivas/inputs/decimal.directive.ts","../../../projects/ng-components-tsi/src/lib/directivas/inputs/only-number.directive.ts","../../../projects/ng-components-tsi/src/lib/directivas/inputs/only-day.directive.ts","../../../projects/ng-components-tsi/src/lib/directivas/animaciones/fade-animation.ts","../../../projects/ng-components-tsi/src/lib/directivas/utils/general/validaciones.ts","../../../projects/ng-components-tsi/src/lib/directivas/utils/general/utilidades.ts","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/input/input.component.ts","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/input/input.component.html","../../../projects/ng-components-tsi/src/lib/modals/general/md-generico/md-generico.component.ts","../../../projects/ng-components-tsi/src/lib/modals/general/md-generico/md-generico.component.html","../../../projects/ng-components-tsi/src/lib/ui/alerts/alert-fecha-emision/alert-fecha-emision.component.ts","../../../projects/ng-components-tsi/src/lib/ui/alerts/alert-fecha-emision/alert-fecha-emision.component.html","../../../projects/ng-components-tsi/src/lib/ui/alerts/alerta/alerta.component.ts","../../../projects/ng-components-tsi/src/lib/ui/alerts/alerta/alerta.component.html","../../../projects/ng-components-tsi/src/lib/ui/alerts/badge/badge.component.ts","../../../projects/ng-components-tsi/src/lib/ui/alerts/toaster/toaster.component.ts","../../../projects/ng-components-tsi/src/lib/ui/alerts/toaster/toaster.component.html","../../../projects/ng-components-tsi/src/lib/ui/dropdown/dropdown-cdk/dropdown-cdk.component.ts","../../../projects/ng-components-tsi/src/lib/ui/dropdown/dropdown-cdk/dropdown-cdk.component.html","../../../projects/ng-components-tsi/src/lib/ui/dropdown/dropdown-simple/dropdown.component.ts","../../../projects/ng-components-tsi/src/lib/ui/dropdown/dropdown-simple/dropdown.component.html","../../../projects/ng-components-tsi/src/lib/ui/forms/header/header.component.ts","../../../projects/ng-components-tsi/src/lib/ui/forms/header/header.component.html","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/autocomplete/autocomplete.component.ts","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/autocomplete/autocomplete.component.html","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/check-box/check-box.component.ts","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/check-box/check-box.component.html","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/autocomplete-cdk/autocomplete.component.ts","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/autocomplete-cdk/autocomplete.component.html","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/doble-input/doble-input.component.ts","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/doble-input/doble-input.component.html","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/input-clase/input-clase.component.ts","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/input-clase/input-clase.component.html","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/input-dinamico/input-dinamico.component.ts","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/input-dinamico/input-dinamico.component.html","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/radio/radio.component.ts","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/radio/radio.component.html","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/input-radio/input-radio.component.ts","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/input-radio/input-radio.component.html","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/multiselected/multiselected.component.ts","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/multiselected/multiselected.component.html","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/switch/switch.component.ts","../../../projects/ng-components-tsi/src/lib/ui/forms/inputs/switch/switch.component.html","../../../projects/ng-components-tsi/src/lib/ui/forms/lists/list-option/list-option.component.ts","../../../projects/ng-components-tsi/src/lib/ui/forms/lists/list-option/list-option.component.html","../../../projects/ng-components-tsi/src/lib/ui/forms/lists/list-situaciones/list-situaciones.component.ts","../../../projects/ng-components-tsi/src/lib/ui/forms/lists/list-situaciones/list-situaciones.component.html","../../../projects/ng-components-tsi/src/lib/ui/forms/lists/multi-select-dropdown/multi-select-dropdown.component.ts","../../../projects/ng-components-tsi/src/lib/ui/forms/lists/multi-select-dropdown/multi-select-dropdown.component.html","../../../projects/ng-components-tsi/src/lib/ui/forms/sidebar/sidebar.component.ts","../../../projects/ng-components-tsi/src/lib/ui/forms/sidebar/sidebar.component.html","../../../projects/ng-components-tsi/src/lib/ui/general/detalle-credito/detalle-credito.component.ts","../../../projects/ng-components-tsi/src/lib/ui/general/detalle-credito/detalle-credito.component.html","../../../projects/ng-components-tsi/src/lib/ui/general/montos-calcular/montos-calcular.component.ts","../../../projects/ng-components-tsi/src/lib/ui/general/montos-calcular/montos-calcular.component.html","../../../projects/ng-components-tsi/src/lib/ui/general/spinner/spinner.component.ts","../../../projects/ng-components-tsi/src/lib/ui/general/spinner/spinner.component.html","../../../projects/ng-components-tsi/src/lib/ui/tables/card-mobile/card-mobile.component.ts","../../../projects/ng-components-tsi/src/lib/ui/tables/card-mobile/card-mobile.component.html","../../../projects/ng-components-tsi/src/lib/directivas/estilos/icons.directive.ts","../../../projects/ng-components-tsi/src/lib/directivas/estilos/buttons-modal.directive.ts","../../../projects/ng-components-tsi/src/lib/directivas/estilos/buttons-outline-directive.ts","../../../projects/ng-components-tsi/src/lib/service/storage.service.ts","../../../projects/ng-components-tsi/src/lib/directivas/utils/configuracion-sistema/factores.ts","../../../projects/ng-components-tsi/src/lib/service/sesion.service.ts","../../../projects/ng-components-tsi/src/lib/ui/tables/dropdown-menu/dropdown-menu.component.ts","../../../projects/ng-components-tsi/src/lib/ui/tables/dropdown-menu/dropdown-menu.component.html","../../../projects/ng-components-tsi/src/lib/ui/tables/paginador/paginador.component.ts","../../../projects/ng-components-tsi/src/lib/ui/tables/paginador/paginador.component.html","../../../projects/ng-components-tsi/src/lib/ui/tables/table-advance/table-advance.component.ts","../../../projects/ng-components-tsi/src/lib/ui/tables/table-advance/table-advance.component.html","../../../projects/ng-components-tsi/src/lib/ui/tables/table-advance-optimizada/table-advance-optimizada.component.ts","../../../projects/ng-components-tsi/src/lib/ui/tables/table-advance-optimizada/table-advance-optimizada.component.html","../../../projects/ng-components-tsi/src/lib/ui/tables/table-busqueda/table-busqueda.component.ts","../../../projects/ng-components-tsi/src/lib/ui/tables/table-busqueda/table-busqueda.component.html","../../../projects/ng-components-tsi/src/lib/ui/tables/table-detalle/table-detalle.component.ts","../../../projects/ng-components-tsi/src/lib/ui/tables/table-detalle/table-detalle.component.html","../../../projects/ng-components-tsi/src/lib/ui/tables/table-simple/table-simple.component.ts","../../../projects/ng-components-tsi/src/lib/ui/tables/table-simple/table-simple.component.html","../../../projects/ng-components-tsi/src/lib/ui/tabs/tab-item/tab-item.component.ts","../../../projects/ng-components-tsi/src/lib/ui/tabs/nav-tabs/nav-tabs.component.ts","../../../projects/ng-components-tsi/src/lib/ui/tabs/nav-tabs/nav-tabs.component.html","../../../projects/ng-components-tsi/src/public-api.ts","../../../projects/ng-components-tsi/src/ng-components-tsi.ts"],"sourcesContent":["import { Directive, ElementRef, HostListener, inject, input, output } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[atajoTecla]'\r\n})\r\nexport class AtajosDirective {\r\n\r\n altKeyCombination = input<string>('')\r\n emitirAtajo = output<void>()\r\n\r\n @HostListener('window:keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent) {\r\n if (event.altKey && \r\n !event.ctrlKey && \r\n !event.metaKey && \r\n !event.shiftKey && \r\n event.key.toLowerCase() === this.altKeyCombination().toLowerCase()) {\r\n event.preventDefault();\r\n this.emitirAtajo.emit();\r\n }\r\n }\r\n}\r\n","export const COLOR_CLASSES = {\r\n azul: 'btn-info',\r\n rojo: 'btn-danger',\r\n verde: 'btn-success',\r\n negro: 'btn-dark',\r\n amarillo: 'btn-warning',\r\n gris: 'btn-secondary',\r\n plomo: 'btn-dark bg-mid-button'\r\n}\r\n\r\nexport const OUTLINE_COLOR_CLASSES = {\r\n azul: 'btn-outline-info',\r\n rojo: 'btn-outline-danger',\r\n verde: 'btn-outline-success',\r\n negro: 'btn-outline-dark',\r\n amarillo: 'btn-outline-warning',\r\n gris: 'btn-outline-secondary',\r\n}\r\n\r\nexport const ICON_CLASSES = {\r\n agregar: 'fa-plus',\r\n buscar: 'fa-search',\r\n guardar: 'fa-save',\r\n nocancelar: 'fa-check-circle',\r\n cancelar: 'fa-times-circle',\r\n cancelar2: 'fa-times',\r\n marcar: 'fa-file',\r\n atras: 'fa-angle-double-left',\r\n adelante: 'fa-angle-double-right',\r\n eliminar: 'fa-trash-alt',\r\n imprimir: 'fa-print',\r\n subir: 'fa-upload',\r\n bajar: 'fa-download',\r\n ver: 'fa-eye',\r\n comentario: 'fa-comment',\r\n editar: 'fa-pencil-alt',\r\n calcular: 'fa-calculator',\r\n aprobar: 'fa-thumbs-up',\r\n desaprobar: 'fa-thumbs-down',\r\n check: 'fa-check',\r\n excel: 'fa-file-excel',\r\n pdf: 'fa-file-pdf',\r\n refresh: 'fa-sync-alt',\r\n cerrar: 'fa-times',\r\n visar: 'fa-paper-plane',\r\n anular: 'fa-ban',\r\n trazabilidad: 'fa-copy',\r\n correo: 'fa-envelope-open',\r\n usuario: 'fa-user-alt',\r\n enviarSunat: 'fa-location-arrow',\r\n descargar: 'fa-download',\r\n borrar: 'fa-eraser',\r\n lista: 'fa-list',\r\n monedas: 'fa-coins',\r\n izquierda: 'fa-arrow-left',\r\n derecha: 'fa-arrow-right',\r\n caja: 'fas fa-folder-plus',\r\n cerrar_caja: 'fas fa-rectangle-xmark',\r\n abrir_caja: 'fas fa-box-open',\r\n liquidar: 'fas fa-cash-register',\r\n configuracion: 'fas fa-cog',\r\n contrato: 'fa-file-contract'\r\n}","import { Component, ElementRef, inject, input, output, ViewChild } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { AtajosDirective } from '../../../directivas/acciones/atajos.directive';\r\nimport { ColorType, IconType, OutlineType } from '../../../models/button-color.model';\r\nimport { COLOR_CLASSES, ICON_CLASSES, OUTLINE_COLOR_CLASSES } from '../../../directivas/estilos/button.constants';\r\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'app-button',\r\n imports: [CommonModule, NgbTooltipModule, AtajosDirective],\r\n templateUrl: './button.component.html',\r\n styleUrl: './button.component.scss'\r\n})\r\nexport class ButtonComponent {\r\n\r\n private sanitizer = inject(DomSanitizer)\r\n\r\n @ViewChild('fileInput') fileInput!: ElementRef<HTMLInputElement>\r\n\r\n color = input<ColorType>(undefined)\r\n outline = input<OutlineType>(undefined)\r\n icon = input<IconType>(undefined)\r\n tooltip = input<string>('')\r\n\r\n texto = input<string>('')\r\n isHtml = input<boolean>(false)\r\n closeButton = input<boolean>(false)\r\n sunatButton = input<boolean>(false)\r\n inputButton = input<boolean>(false)\r\n buttonDeshabilitado = input<boolean>(false)\r\n atajo = input<string>('')\r\n\r\n dropdownButton = input<boolean>(false)\r\n extraClass = input<string>('')\r\n\r\n accion = output<void>()\r\n\r\n disabled = input<boolean>(false)\r\n\r\n uploadButton = input<boolean>(false)\r\n accept = input<string>('*/*')\r\n fileSelected = output<File>()\r\n\r\n isRounded = input<boolean>(false)\r\n isNotStyle = input<boolean>(false)\r\n\r\n getSafeHtml(): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(this.texto())\r\n }\r\n\r\n shouldBlockClick(): boolean {\r\n return this.buttonDeshabilitado() == true\r\n }\r\n\r\n getColorClass(): string {\r\n return this.color() ? COLOR_CLASSES[this.color()] || '' : ''\r\n }\r\n\r\n getColorClassOutline(): string {\r\n return this.outline() ? OUTLINE_COLOR_CLASSES[this.outline()] || '' : ''\r\n }\r\n\r\n getIconClass(): string {\r\n const iconClass = this.icon() ? `${ICON_CLASSES[this.icon()] || ''} ${!this.isRounded() ? 'me-1' : ''}` : ''\r\n return iconClass ? `fa ${iconClass}` : ''\r\n }\r\n\r\n handleClick(event: MouseEvent): void {\r\n if (this.shouldBlockClick()) {\r\n event.stopPropagation()\r\n event.preventDefault()\r\n return\r\n }\r\n\r\n if (this.uploadButton()) {\r\n event.stopPropagation()\r\n this.triggerFileInput()\r\n } else {\r\n this.ejecutarAccion()\r\n }\r\n }\r\n\r\n ejecutarAccion() {\r\n this.accion.emit()\r\n }\r\n\r\n triggerFileInput(): void {\r\n if (!this.disabled()) {\r\n this.fileInput.nativeElement.click()\r\n }\r\n }\r\n\r\n handleFileInput(event: Event): void {\r\n const input = event.target as HTMLInputElement\r\n if (input.files && input.files.length > 0) {\r\n this.fileSelected.emit(input.files[0])\r\n input.value = ''\r\n }\r\n }\r\n\r\n construirAlt = () => {\r\n return this.atajo() ? `${this.texto()}: Alt + ${this.atajo()}` : \"\"\r\n }\r\n}","@if(!closeButton() && !dropdownButton() && !uploadButton() && !sunatButton() && ! inputButton()){\r\n<button atajoTecla [altKeyCombination]=\"atajo()\"\r\n (emitirAtajo)=\"disabled() ? null : ( atajo() ? ejecutarAccion() : null)\" [title]=\"construirAlt()\"\r\n class=\"{{ isNotStyle() ? 'btn btn-sm' : (isRounded() ? 'circle button-tilt-hover' : 'btn btn-rounded button-tilt-hover text-white me-1 fs-8 px-3 w-auto w-sm-100') }}\"\r\n [ngClass]=\"outline() ? getColorClassOutline() : getColorClass()\" (click)=\"ejecutarAccion()\" [disabled]=\"disabled()\">\r\n <i [ngClass]=\"getIconClass()\" class=\"button-icon-hover\"></i>\r\n <span [innerHTML]=\"isHtml() ? getSafeHtml() : texto()\"></span>\r\n</button>\r\n}\r\n@if(sunatButton()){\r\n<button atajoTecla [altKeyCombination]=\"atajo()\"\r\n (emitirAtajo)=\"disabled() ? null : ( atajo() ? ejecutarAccion() : null)\"\r\n class=\"btn btn-rounded button-tilt-hover text-white me-1 fs-8 px-3 w-auto w-sm-100\"\r\n [ngClass]=\"outline() ? getColorClassOutline() : getColorClass()\" (click)=\"ejecutarAccion()\" [disabled]=\"disabled()\">\r\n <img src=\"../../../../../assets/images/Sunat.ico\" class=\"button-icon-hover\" height=\"16px\" alt=\"Sunat\"> {{texto() ??\r\n 'Importar de SUNAT'}}\r\n</button>\r\n}\r\n\r\n@if(inputButton()){\r\n<button class=\"btn button-tilt-hover text-white me-1 fs-6 px-3 py-0 w-auto w-sm-100 radius-none padd\"\r\n [ngClass]=\"outline() ? getColorClassOutline() : getColorClass()\" (click)=\"ejecutarAccion()\" [disabled]=\"disabled()\">\r\n <i [ngClass]=\"getIconClass()\" class=\"button-icon-hover\"></i>\r\n <span>{{ texto() }}</span>\r\n</button>\r\n}\r\n\r\n@if(closeButton()){\r\n<button class=\"btn close fs-5 no-border\" (click)=\"ejecutarAccion()\" [disabled]=\"disabled()\">\r\n <i class=\"me-1 button-icon-hover text-dark fw-bold\" [ngClass]=\"getIconClass()\"></i>\r\n</button>\r\n}\r\n\r\n@if(dropdownButton()){\r\n<button class=\"dropdown-item fs-6\" (click)=\"handleClick($event)\" [disabled]=\"disabled()\" [ngClass]=\"extraClass()\"\r\n [ngbTooltip]=\"tooltip()\" [style.cursor]=\"shouldBlockClick() ? 'not-allowed' : 'pointer'\" placement=\"right\">\r\n <i class=\"me-1\" [ngClass]=\"getIconClass()\"></i>\r\n <span [innerHTML]=\"isHtml() ? getSafeHtml() : texto()\"></span>\r\n @if(uploadButton()){\r\n <input type=\"file\" #fileInput [accept]=\"accept()\" (change)=\"handleFileInput($event)\" [disabled]=\"disabled()\"\r\n class=\"d-none\">\r\n }\r\n</button>\r\n}\r\n\r\n@if(uploadButton() && !dropdownButton()){\r\n<button class=\"btn btn-rounded button-tilt-hover text-white me-1 fs-8 px-3 w-auto w-sm-100\"\r\n [ngClass]=\"outline() ? getColorClassOutline() : getColorClass()\" (click)=\"triggerFileInput()\"\r\n [disabled]=\"disabled()\" [ngbTooltip]=\"tooltip()\" type=\"button\">\r\n <i [ngClass]=\"getIconClass()\" class=\"me-1 button-icon-hover\"></i>\r\n <span [innerHTML]=\"isHtml() ? getSafeHtml() : texto()\"></span>\r\n <input type=\"file\" #fileInput [accept]=\"accept()\" (change)=\"handleFileInput($event)\" [disabled]=\"disabled()\"\r\n class=\"d-none\">\r\n</button>\r\n}","import { computed, Injectable, signal } from '@angular/core';\r\n\r\nexport interface Toast {\r\n id: number,\r\n title: string,\r\n message: string,\r\n subtitle?: string,\r\n type: 'success' | 'error' | 'info' | 'warning' | 'webpush'\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ToastService {\r\n\r\n toasts = signal<Toast[]>([])\r\n toastCount = computed(() => this.toasts().length)\r\n\r\n private show(title: string, message: string, type: 'success' | 'error' | 'info' | 'warning' | 'webpush', subtitle?: string) {\r\n const id = Date.now() * 1000 + Math.floor(Math.random() * 1000);\r\n const toast: Toast = { id, title, message, type, subtitle }\r\n\r\n this.toasts.update((prev) => [...prev, toast])\r\n setTimeout(() => this.remove(id), type == 'webpush' ? 10000 : 3000)\r\n return id\r\n }\r\n\r\n remove(id: number) {\r\n this.toasts.update(prev => prev.filter(t => t.id !== id))\r\n }\r\n\r\n success(title: string, message: string) {\r\n return this.show(title, message, 'success')\r\n }\r\n\r\n error(title: string, message: string) {\r\n return this.show(title, message, 'error')\r\n }\r\n\r\n info(title: string, message: string) {\r\n return this.show(title, message, 'info')\r\n }\r\n\r\n warning(title: string, message: string) {\r\n return this.show(title, message, 'warning')\r\n }\r\n\r\n webpush(title: string, message: string, subtitle?: string) {\r\n return this.show(title, message, 'webpush', subtitle)\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, computed, signal, inject } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { ButtonComponent } from '../../forms/button/button.component';\r\nimport { ToastService } from '../../../service/toast.service';\r\nimport { ColorType } from '../../../models/button-color.model';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'app-alert-confirmation',\r\n imports: [CommonModule, FormsModule, ButtonComponent],\r\n templateUrl: './alert-confirmation.component.html',\r\n styleUrl: './alert-confirmation.component.scss'\r\n})\r\nexport class AlertConfirmationComponent {\r\n\r\n private activeModal = inject(NgbActiveModal)\r\n private toast = inject(ToastService)\r\n\r\n showTextarea = signal<boolean>(true)\r\n texto = signal<string>('')\r\n textoFormateado = computed(() => {\r\n const texto = this.texto()\r\n const matches = [...texto.matchAll(/[-]{5,}/g)]\r\n\r\n if (matches.length == 0) {\r\n return texto.replace(/\\n/g, '<br>')\r\n }\r\n\r\n const lastMatch = matches[matches.length - 1]\r\n const start = lastMatch.index!\r\n const end = start + lastMatch[0].length\r\n\r\n const textoSinUltimaLinea = texto.slice(0, start) + texto.slice(end)\r\n\r\n return textoSinUltimaLinea\r\n .replace(/\\n/g, '<br>')\r\n .replace(/[-]{5,}/g, '<hr class=\"my-2 custom-hr\" />')\r\n })\r\n select = signal<boolean>(false)\r\n opciones = signal<string[]>([])\r\n selectedOption = signal<string>('')\r\n textareaValue = signal<string>('')\r\n\r\n confirmar = signal<string>('Aceptar')\r\n mostrarConfirmar = signal<boolean>(true)\r\n\r\n cancelar = signal<string>('Cancelar')\r\n mostrarCancelar = signal<boolean>(true)\r\n\r\n mostrarExtra = signal<boolean>(false)\r\n extra = signal<string>('')\r\n colorExtra = signal<ColorType>('azul')\r\n\r\n maxLength = signal<number>(200)\r\n\r\n get textareaValueModel(): string {\r\n return this.textareaValue()\r\n }\r\n set textareaValueModel(val: string) {\r\n this.textareaValue.set(val)\r\n }\r\n\r\n mostrarTextareaComputed = computed(() => {\r\n if (!this.select()) return true\r\n const opts = this.opciones()\r\n const sel = this.selectedOption()\r\n return sel == opts[opts.length - 1]\r\n })\r\n\r\n ngOnInit(): void {\r\n if (this.select()) {\r\n if (this.opciones().length > 0) {\r\n this.selectedOption.set(this.opciones()[0])\r\n }\r\n }\r\n }\r\n\r\n onTextareaChange(value: string): void {\r\n this.textareaValue.set(value)\r\n }\r\n\r\n onConfirmar(): void {\r\n const opts = this.opciones()\r\n const selected = this.selectedOption()\r\n\r\n if (this.select() && selected == opts[0]) {\r\n this.toast.warning('Advertencia', 'Debe seleccionar una opción correcta.')\r\n return\r\n }\r\n\r\n if (this.showTextarea() && this.mostrarTextareaComputed() && !this.textareaValue().trim()) {\r\n this.toast.warning('Advertencia', 'Debe ingresar un motivo.')\r\n return\r\n }\r\n\r\n if (!this.select()) {\r\n this.activeModal.close(this.showTextarea() ? this.textareaValue().trim() : true)\r\n } else {\r\n if (this.showTextarea() && this.mostrarTextareaComputed()) {\r\n this.activeModal.close(this.textareaValue().trim())\r\n } else {\r\n this.activeModal.close(selected)\r\n }\r\n }\r\n }\r\n \r\n onExtra(): void {\r\n this.activeModal.close('extra')\r\n }\r\n\r\n closeModal(): void {\r\n this.activeModal.close()\r\n }\r\n}\r\n","<div class=\"p-4\">\r\n <div class=\"d-flex justify-content-center mb-3\">\r\n <i class=\"fas fa-exclamation-circle color-icon\"></i>\r\n </div>\r\n\r\n <div class=\"fs-8 text-center\" [innerHTML]=\"textoFormateado()\"></div>\r\n\r\n @if(select()){\r\n <div class=\"d-flex align-items-center gap-2 mt-3\">\r\n <label class=\"form-label mb-0 nowrap\">Motivo:</label>\r\n <select class=\"form-select text-center\" [value]=\"selectedOption()\"\r\n (change)=\"selectedOption.set($any($event.target).value)\">\r\n @for(opt of opciones(); track $index){\r\n <option [value]=\"opt\">{{ opt }}</option>\r\n }\r\n </select>\r\n </div>\r\n }\r\n\r\n @if(showTextarea() && mostrarTextareaComputed()){\r\n <textarea class=\"form-control mt-3 fs-6 ch-100\" placeholder=\"Ingresar motivo...\" [(ngModel)]=\"textareaValueModel\"\r\n (ngModelChange)=\"onTextareaChange($event)\" [maxlength]=\"maxLength()\">\r\n </textarea>\r\n <div class=\"character-counter\" [class.color-caracter]=\"(maxLength() - (textareaValueModel?.length || 0)) < 10\">\r\n Caracteres disponibles: {{ maxLength() - (textareaValueModel?.length || 0) }} de {{ maxLength() }}\r\n </div>\r\n }\r\n\r\n <div class=\"d-flex justify-content-center gap-2 mt-3\">\r\n @if(mostrarConfirmar()){\r\n <app-button [texto]=\"confirmar()\" color=\"azul\" (accion)=\"onConfirmar()\" [isHtml]=\"true\" />\r\n }\r\n @if(mostrarExtra()){\r\n <app-button [texto]=\"extra()\" [color]=\"colorExtra()\" (accion)=\"onExtra()\" [isHtml]=\"true\" />\r\n }\r\n @if(mostrarCancelar()){\r\n <app-button [texto]=\"cancelar()\" color=\"rojo\" (accion)=\"closeModal()\" [isHtml]=\"true\" />\r\n }\r\n </div>\r\n</div>","import { DecimalPipe } from \"@angular/common\"\r\nimport { InputConfig, InputValidate } from \"../../../models/input-config\"\r\n\r\nexport function sumarDias(fecha: string, dias: number): string {\r\n const nuevaFecha = new Date(fecha)\r\n nuevaFecha.setDate(nuevaFecha.getDate() + dias)\r\n return nuevaFecha.toISOString().split('T')[0]\r\n}\r\n\r\nexport function procesaSituaciones(tipdoc: any[], situacionesArray: any[]) {\r\n if (situacionesArray) {\r\n return tipdoc\r\n .map((item, index) => situacionesArray.includes(item.situac) ? index : -1)\r\n .filter(index => index !== -1)\r\n }\r\n return []\r\n}\r\n\r\nexport function validaSituaciones(situac: any) {\r\n return typeof situac == 'string'\r\n ? situac.split(',')\r\n : situac\r\n}\r\n\r\nexport function obtenerIndicesSeleccionados<T>(\r\n arrayData: T[],\r\n selectedIds: (string | number)[],\r\n keyId: keyof T = 'id' as keyof T\r\n): number[] {\r\n if (!arrayData?.length || !selectedIds?.length) return []\r\n\r\n return arrayData\r\n .map((item, index) => selectedIds.includes(item[keyId] as any) ? index : -1)\r\n .filter(index => index !== -1)\r\n}\r\n\r\nexport const adjuntoBuilders: Record<string, (ctx: any, archivo: any) => any> = {\r\n documentos_cab: (ctx, archivo) => ({\r\n tipdoc: ctx.tipdoc(),\r\n numint: ctx.numint(),\r\n ...archivo\r\n }),\r\n compr010: (ctx, archivo) => ({\r\n tipo: ctx.tipo(),\r\n docume: ctx.docu(),\r\n ...archivo\r\n }),\r\n cxc: (ctx, archivo) => ({\r\n libro: ctx.libro(),\r\n periodo: ctx.periodo(),\r\n mes: ctx.mes(),\r\n asiento: ctx.asiento(),\r\n ...archivo\r\n }),\r\n cxp: (ctx, archivo) => ({\r\n libro: ctx.libro(),\r\n periodo: ctx.periodo(),\r\n mes: ctx.mes(),\r\n asiento: ctx.asiento(),\r\n ...archivo\r\n })\r\n}\r\n\r\nexport function cleanNumber(number: string | number): number {\r\n if (number == null) return 0\r\n\r\n if (typeof number == 'number') {\r\n return isNaN(number) ? 0 : number\r\n }\r\n\r\n const cleaned = number.replace(/,/g, \"\")\r\n const parsed = Number(cleaned)\r\n return isNaN(parsed) ? 0 : parsed\r\n}\r\n\r\nexport function esFechaMayorActual(fechaTexto: string): boolean {\r\n const [año, mes, dia] = fechaTexto.split('-').map(Number)\r\n const fecha = new Date(año, mes - 1, dia)\r\n const hoy = new Date()\r\n const fechaHoy = new Date(hoy.getFullYear(), hoy.getMonth(), hoy.getDate())\r\n\r\n return fecha > fechaHoy\r\n}\r\n\r\nexport function sumarValores(data: any[], propiedad?: string, ignorarUltimo?: boolean): number {\r\n\r\n const valores = ignorarUltimo && data.length > 1 ? data.slice(0, -1) : data;\r\n\r\n return valores.reduce((acumulador, item) => {\r\n const valor = propiedad ? cleanNumber(item?.[propiedad]) : cleanNumber(item)\r\n return acumulador + (!isNaN(valor) ? valor : 0)\r\n }, 0)\r\n}\r\n\r\nexport function insertarEnPenultimo(array: any[], elemento: any) {\r\n if (!Array.isArray(array)) {\r\n return [elemento]\r\n }\r\n array.length ? array.splice(array.length - 1, 0, elemento) : array.push(elemento)\r\n return array\r\n}\r\n\r\nexport function insertarArrayEnPenultimo(array: any[], elemento: any[], alFinal?: boolean) {\r\n if (!Array.isArray(array)) {\r\n return [...elemento]\r\n }\r\n if (alFinal) {\r\n array.push(...elemento)\r\n return array\r\n }\r\n array.length ? array.splice(array.length - 1, 0, ...elemento) : array.push(...elemento);\r\n return array\r\n}\r\n\r\nexport function formatNumber(directiva: DecimalPipe, value: number, pipe?: string) {\r\n return directiva.transform(value, pipe ?? '1.2-2')\r\n}\r\n\r\nexport function createFormatNumber(value?: number) {\r\n return `1.${value ?? 2}-${value ?? 2}`\r\n}\r\n\r\nexport function applyHandlers<T extends { fieldname: string }>(\r\n headers: T[],\r\n handlers: Record<string, Partial<T>>\r\n): void {\r\n headers.forEach(col => {\r\n const extras = handlers[col.fieldname];\r\n if (extras) Object.assign(col, extras);\r\n });\r\n}\r\n\r\nexport function obtenerTipoClases(lst: any): string {\r\n if (lst.vchar) return 'vchar';\r\n if (lst.vstrg) return 'vstrg';\r\n if (lst.ventero) return 'ventero';\r\n if (lst.vreal) return 'vreal';\r\n if (lst.vdate) return 'vdate';\r\n if (lst.vtime) return 'vtime';\r\n if (lst.vglosa) return 'vglosa';\r\n return 'codigo';\r\n}\r\n\r\nexport function allStatus(sender: any, status: boolean) {\r\n Object.keys(sender).forEach(item => {\r\n sender[item] = status\r\n })\r\n}\r\n\r\nexport function validarVacioAndNull(value: string | number) {\r\n return value !== null && value !== undefined && value !== '';\r\n}\r\n\r\nexport function validarBoolean(value: boolean | null | undefined): boolean {\r\n return value ?? true;\r\n}\r\n\r\nexport function getInputsObligatorios(data: InputConfig[]): InputValidate[] {\r\n return data\r\n .filter(item => item.required)\r\n .map(c => ({\r\n key: c.fieldname,\r\n descri: c.label\r\n }))\r\n}\r\n\r\nexport function mostrarValor(data: any, clave: string) {\r\n if (!data) return 0;\r\n if (!data[clave]) return 0;\r\n return data[clave];\r\n}\r\n\r\nexport function filtrarUnicosPorClave(array: any[], key: string) {\r\n const unicos = new Set();\r\n return array.filter(item => {\r\n const clave = item[key]\r\n if (unicos.has(clave)) {\r\n return false;\r\n }\r\n unicos.add(clave);\r\n return true;\r\n });\r\n}\r\n\r\nexport function obtenerInventarioDefault(lista: any[]) {\r\n const inventarioDefecto = lista.find(inv => inv.swdefaul == 'S')\r\n const firstInventario = lista[0]\r\n return inventarioDefecto ? inventarioDefecto.tipinv : firstInventario.tipinv\r\n}\r\n\r\nexport function formatFloat(value: any, decimals?: number): number {\r\n const num = Number(cleanNumber(value));\r\n if (isNaN(num)) {\r\n return 0;\r\n }\r\n return parseFloat(num.toFixed(decimals ?? 2));\r\n}\r\n\r\nexport function formatPlanilla(planilla?: string): { libro: string | null, periodo: number | null, mes: number | null, asiento: number | null } {\r\n const result = { libro: null, periodo: null, mes: null, asiento: null };\r\n if (!planilla || planilla === '---') {\r\n return result;\r\n }\r\n const parts = planilla.split('-').filter(Boolean);\r\n result.libro = parts[0] ?? null;\r\n result.periodo = parts[1] !== undefined ? Number(parts[1]) || null : null;\r\n result.mes = parts[2] !== undefined && parts[2] !== '' ? parts[2].toString().padStart(2, '0') : null;\r\n result.asiento = parts[3] !== undefined ? Number(parts[3]) || null : null;\r\n return result;\r\n}","import { DecimalPipe } from '@angular/common';\r\nimport { Directive, ElementRef, HostListener, inject, input } from '@angular/core';\r\nimport { NgModel } from '@angular/forms';\r\nimport { cleanNumber } from '../utils/general/funciones';\r\n\r\n@Directive({\r\n selector: '[appDecimal]',\r\n providers: [DecimalPipe]\r\n})\r\nexport class DecimalDirective {\r\n\r\n appDecimal = input<string>('1.2-2')\r\n\r\n private elementRef = inject(ElementRef)\r\n private decimalPipe = inject(DecimalPipe)\r\n private ngModel = inject(NgModel)\r\n\r\n private isFocused = false\r\n\r\n ngAfterViewInit(): void {\r\n queueMicrotask(() => {\r\n this.formatValue()\r\n })\r\n }\r\n\r\n @HostListener('blur')\r\n onBlur(): void {\r\n this.isFocused = false\r\n this.formatValue()\r\n }\r\n\r\n @HostListener('input', ['$event.target.value'])\r\n onInput(rawValue: string): void {\r\n const cleaned = rawValue.replace(/[^0-9.,-]/g, '')\r\n const normalized = cleaned.replace(',', '.')\r\n const parsed = parseFloat(normalized)\r\n\r\n if (!isNaN(parsed)) {\r\n this.ngModel.update.emit(parsed)\r\n }\r\n }\r\n\r\n private formatValue(): void {\r\n const value = cleanNumber(this.ngModel.model)\r\n const formatted = this.decimalPipe.transform(value, (this.appDecimal() ?? '1.2-2'))\r\n this.elementRef.nativeElement.value = formatted !== null ? formatted : this.decimalPipe.transform(0, (this.appDecimal() ?? '1.2-2'))\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[onlyNumber]'\r\n})\r\nexport class OnlyNumberDirective {\r\n\r\n private elementRef = inject(ElementRef)\r\n\r\n @HostListener('keypress', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n const inputChar = event.key\r\n\r\n if (event.ctrlKey || event.metaKey || inputChar.length > 1) return\r\n\r\n const input = this.elementRef.nativeElement\r\n const currentValue = input.value\r\n const start = input.selectionStart ?? currentValue.length\r\n const end = input.selectionEnd ?? currentValue.length\r\n\r\n const proposed =\r\n currentValue.substring(0, start) +\r\n inputChar +\r\n currentValue.substring(end)\r\n\r\n const regex = /^-?\\d*\\.?\\d*$/\r\n\r\n if (!regex.test(proposed)) {\r\n event.preventDefault()\r\n }\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n onPaste(event: ClipboardEvent): void {\r\n const pasted = event.clipboardData?.getData('text') || ''\r\n const input = this.elementRef.nativeElement\r\n const currentValue = input.value\r\n const start = input.selectionStart ?? currentValue.length\r\n const end = input.selectionEnd ?? currentValue.length\r\n\r\n const proposed =\r\n currentValue.substring(0, start) +\r\n pasted +\r\n currentValue.substring(end)\r\n\r\n const regex = /^-?\\d*\\.?\\d*$/\r\n\r\n if (!regex.test(proposed)) {\r\n event.preventDefault()\r\n }\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, HostListener, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[onlyDay]'\r\n})\r\nexport class OnlyDayDirective {\r\n private elementRef = inject(ElementRef<HTMLInputElement>)\r\n\r\n @HostListener('keypress', ['$event'])\r\n onKeyPress(event: KeyboardEvent): void {\r\n const inputChar = event.key\r\n\r\n if (event.ctrlKey || event.metaKey || inputChar.length > 1) return\r\n\r\n if (!/^[0-9]$/.test(inputChar)) {\r\n event.preventDefault()\r\n return\r\n }\r\n\r\n const input = this.elementRef.nativeElement\r\n const currentValue = input.value\r\n const start = input.selectionStart ?? currentValue.length\r\n const end = input.selectionEnd ?? currentValue.length\r\n\r\n const proposed = currentValue.substring(0, start) + inputChar + currentValue.substring(end)\r\n const num = Number(proposed)\r\n\r\n if (num < 1 || num > 31) {\r\n event.preventDefault()\r\n }\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n onPaste(event: ClipboardEvent): void {\r\n const pasted = event.clipboardData?.getData('text') || ''\r\n\r\n if (!/^\\d+$/.test(pasted)) {\r\n event.preventDefault()\r\n return\r\n }\r\n\r\n const input = this.elementRef.nativeElement\r\n const currentValue = input.value\r\n const start = input.selectionStart ?? currentValue.length\r\n const end = input.selectionEnd ?? currentValue.length\r\n\r\n const proposed = currentValue.substring(0, start) + pasted + currentValue.substring(end)\r\n const num = Number(proposed)\r\n if (num < 1 || num > 31) {\r\n event.preventDefault()\r\n }\r\n }\r\n}\r\n","import { animate, state, style, transition, trigger } from \"@angular/animations\";\r\n\r\n\r\nexport const fadeInOut = trigger('fadeInOut', [\r\n transition(':enter', [\r\n style({ opacity: 0, transform: 'translateY(-5px)' }),\r\n animate('200ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),\r\n ]),\r\n transition(':leave', [\r\n animate('200ms ease-in', style({ opacity: 0, transform: 'translateY(-5px)' })),\r\n ]),\r\n ]);\r\n\r\n\r\nexport const dropdownAnimation = trigger('dropdownAnimation', [\r\n transition(':enter', [\r\n style({ height: '0', opacity: 0, transform: 'translateY(-10px)', overflow: 'hidden' }),\r\n animate(\r\n '200ms ease-out',\r\n style({ height: '*', opacity: 1, transform: 'translateY(0)' })\r\n ),\r\n ]),\r\n transition(':leave', [\r\n animate(\r\n '200ms ease-in',\r\n style({ height: '0', opacity: 0, transform: 'translateY(-10px)' })\r\n ),\r\n ]),\r\n ]);\r\n\r\nexport const dropdownAnimationV2 = trigger('dropdownAnimation', [\r\n state('cerrado', style({\r\n height: '0px',\r\n opacity: 0,\r\n transform: 'translateY(-10px)',\r\n overflow: 'hidden',\r\n })),\r\n state('abierto', style({\r\n height: '*',\r\n opacity: 1,\r\n transform: 'translateY(0)',\r\n overflow: 'hidden',\r\n })),\r\n transition('cerrado <=> abierto', animate('300ms ease')),\r\n ]); ","import { ToastService } from \"../../../service/toast.service\"\r\n\r\nexport interface ValidationConfig {\r\n list?: any[]\r\n value: any\r\n listName?: string\r\n key?: string\r\n validationType?: 'list' | 'dateFormat' | 'dateRange' | 'required' | 'periodLength' | 'listSelection' | 'notZero'\r\n compareWith?: any\r\n requiredMessage?: string\r\n rejectNoption?: string\r\n listSelectionMessage?: string\r\n notZeroMessage?: string\r\n}\r\n\r\nexport function validateSelection(\r\n toast: ToastService,\r\n config: ValidationConfig | ValidationConfig[]\r\n): boolean {\r\n if (Array.isArray(config)) {\r\n for (const item of config) {\r\n if (!validateItem(item)) {\r\n const message = getErrorMessage(item)\r\n toast.warning('Advertencia', message)\r\n return false\r\n }\r\n }\r\n return true\r\n } else {\r\n const isValid = validateItem(config)\r\n if (!isValid) {\r\n const message = getErrorMessage(config)\r\n toast.warning('Advertencia', message)\r\n }\r\n return isValid\r\n }\r\n}\r\n\r\nfunction validateItem(config: ValidationConfig): boolean {\r\n switch (config.validationType) {\r\n case 'dateRange':\r\n if (!config.compareWith) return true\r\n return isDateBeforeOrEqual(config.value, config.compareWith)\r\n case 'required':\r\n return !!config.value\r\n case 'periodLength':\r\n return config.value?.toString().length == 4\r\n case 'listSelection':\r\n return !!config.value\r\n case 'notZero':\r\n return config.value != 0 && config.value != '0'\r\n case 'list':\r\n default:\r\n return validateSingle(config)\r\n }\r\n}\r\n\r\nfunction getErrorMessage(config: ValidationConfig): string {\r\n switch (config.validationType) {\r\n case 'dateFormat':\r\n return `El formato de fecha para ${config.listName} no es válido (yyyy-mm-dd).`\r\n case 'dateRange':\r\n const formattedDate = formatDateToDDMMYYYY(config.compareWith)\r\n return `La fecha ${config.listName} debe ser anterior o igual a ${formattedDate}.`\r\n case 'required':\r\n return config.requiredMessage || `El campo ${config.listName} es obligatorio.`\r\n case 'periodLength':\r\n return `El campo ${config.listName} debe tener 4 caracteres.`\r\n case 'listSelection':\r\n return config.listSelectionMessage || `Debe seleccionar un elemento de la lista de ${config.listName}.`\r\n case 'notZero':\r\n return config.notZeroMessage || `El valor de ${config.listName} no puede ser cero.`\r\n default:\r\n return `El código de ${config.listName} no existe.`\r\n }\r\n}\r\n\r\nfunction formatDateToDDMMYYYY(dateString: string): string {\r\n if (!dateString) return dateString\r\n\r\n const parts = dateString.split('-')\r\n if (parts.length == 3) {\r\n return `${parts[2]}-${parts[1]}-${parts[0]}`\r\n }\r\n return dateString\r\n}\r\n\r\nfunction validateSingle(config: ValidationConfig): boolean {\r\n const { list, value, key, rejectNoption } = config\r\n if (rejectNoption && (value == null || value == undefined)) {\r\n return false\r\n }\r\n if (value == null || value == undefined || value == '' || value == -1) {\r\n return true\r\n }\r\n\r\n if (key) {\r\n return list?.some(item => item[key] == value) ?? false\r\n } else {\r\n return list?.includes(value) ?? false\r\n }\r\n}\r\n\r\nfunction isDateBeforeOrEqual(startDateStr: string, endDateStr: string): boolean {\r\n if (!startDateStr || !endDateStr) return true\r\n\r\n const [year1, month1, day1] = startDateStr.split('-').map(Number)\r\n const [year2, month2, day2] = endDateStr.split('-').map(Number)\r\n\r\n const date1 = new Date(year1, month1 - 1, day1)\r\n const date2 = new Date(year2, month2 - 1, day2)\r\n\r\n return date1 <= date2\r\n}\r\n\r\nconst posiblesValores = ['center', 'start', 'end'] as const;\r\n\r\nexport function validaPosicion(value: string): 'center' | 'start' | 'end' {\r\n if (posiblesValores.includes(value as any)) {\r\n return value as 'center' | 'start' | 'end';\r\n }\r\n return 'start';\r\n}\r\n\r\nconst posiblesValoresTipoInput = ['text', 'text-area', 'date', 'number', 'select', 'number-format-decimal', 'number-integer'] as const;\r\n\r\nexport function validaTipo(value: string): 'text' | 'text-area' | 'date' | 'number' | 'select' | 'number-format-decimal' | 'number-integer' {\r\n if (posiblesValoresTipoInput.includes(value as any)) {\r\n return value as 'text' | 'text-area' | 'date' | 'number' | 'select' | 'number-format-decimal' | 'number-integer';\r\n }\r\n return 'text';\r\n}\r\n\r\nexport function validaArray(data:any):boolean {\r\n return Array.isArray(data) && data.length > 0\r\n}\r\n\r\nexport function getFirstItem<T>(data:T[]): T | null {\r\n if(!validaArray(data)){\r\n return null;\r\n }\r\n return data[0]\r\n}","import Swal from \"sweetalert2\";\r\n\r\nexport const documentosEstadoCuenta = [\r\n {codigo: false, descri: 'Todos los documentos'},\r\n {codigo: true, descri: 'Documentos pendientes'}\r\n]\r\nexport const sexos = [\r\n {codsex:'M',descri:'Masculino'},\r\n {codsex:'F',descri:'Femenino'}\r\n]\r\n\r\nexport const creditosCliente = [\r\n {codigo: 0, descri: 'Cerrado'},\r\n {codigo: 1, descri: 'Abierto'}\r\n]\r\n\r\nexport const dhList:any[] = [\r\n {cod:'D',descri:'Debe'},\r\n {cod:'H',descri:'Haber'}\r\n]\r\n// LISTAS UTILITARIAS\r\n\r\nexport const documentosList = [\r\n {codigo: 1, descri: 'Factura'},\r\n {codigo: 7, descri: 'Nota de Crédito'},\r\n {codigo: 8, descri: 'Nota de Débito'},\r\n {codigo: 20, descri: 'Comprobante de retencion'},\r\n {codigo: 41, descri: 'Comprobante de percepción'}\r\n]\r\n\r\nexport const allMeses: any[] = [\r\n { id: 1, nombre: 'Enero' },\r\n { id: 2, nombre: 'Febrero' },\r\n { id: 3, nombre: 'Marzo' },\r\n { id: 4, nombre: 'Abril' },\r\n { id: 5, nombre: 'Mayo' },\r\n { id: 6, nombre: 'Junio' },\r\n { id: 7, nombre: 'Julio' },\r\n { id: 8, nombre: 'Agosto' },\r\n { id: 9, nombre: 'Septiembre' },\r\n { id: 10, nombre: 'Octubre' },\r\n { id: 11, nombre: 'Noviembre' },\r\n { id: 12, nombre: 'Diciembre' },\r\n]\r\n\r\nexport const allMesesWithTodos: any[] = [\r\n { id: -1, nombre: 'Todos' },\r\n { id: 1, nombre: 'Enero' },\r\n { id: 2, nombre: 'Febrero' },\r\n { id: 3, nombre: 'Marzo' },\r\n { id: 4, nombre: 'Abril' },\r\n { id: 5, nombre: 'Mayo' },\r\n { id: 6, nombre: 'Junio' },\r\n { id: 7, nombre: 'Julio' },\r\n { id: 8, nombre: 'Agosto' },\r\n { id: 9, nombre: 'Septiembre' },\r\n { id: 10, nombre: 'Octubre' },\r\n { id: 11, nombre: 'Noviembre' },\r\n { id: 12, nombre: 'Diciembre' },\r\n]\r\n\r\nexport const allMesesWithApertura: any[] = [\r\n { id: 0, nombre: 'Apertura' },\r\n { id: 1, nombre: 'Enero' },\r\n { id: 2, nombre: 'Febrero' },\r\n { id: 3, nombre: 'Marzo' },\r\n { id: 4, nombre: 'Abril' },\r\n { id: 5, nombre: 'Mayo' },\r\n { id: 6, nombre: 'Junio' },\r\n { id: 7, nombre: 'Julio' },\r\n { id: 8, nombre: 'Agosto' },\r\n { id: 9, nombre: 'Septiembre' },\r\n { id: 10, nombre: 'Octubre' },\r\n { id: 11, nombre: 'Noviembre' },\r\n { id: 12, nombre: 'Diciembre' },\r\n]\r\n\r\nexport const allMesesObj = {\r\n 1: 'Enero',\r\n 2: 'Febrero',\r\n 3: 'Marzo',\r\n 4: 'Abril',\r\n 5: 'Mayo',\r\n 6: 'Junio',\r\n 7: 'Julio',\r\n 8: 'Agosto',\r\n 9: 'Septiembre',\r\n 10: 'Octubre',\r\n 11: 'Noviembre',\r\n 12: 'Diciembre'\r\n}\r\n\r\nexport const fileTypes = {\r\n pdf: 'application/pdf',\r\n jpeg: 'image/jpeg',\r\n png: 'image/png',\r\n jpg: 'image/jpg',\r\n}\r\n\r\n//FUNCIONES\r\n\r\nexport function alertaLoaderHTML(mensaje: string, timer = 3000, onFinish?: () => void) {\r\n Swal.fire({\r\n html: mensaje,\r\n showConfirmButton: false,\r\n allowOutsideClick: false,\r\n timer,\r\n timerProgressBar: true\r\n }).then(() => {\r\n if (onFinish) onFinish();\r\n });\r\n}\r\n\r\nexport function alertaConfirmacionHTML(mensaje: string, tipoAlerta: any) {\r\n let ejecutarAlerta = new Promise(function (resolve) {\r\n Swal.fire({\r\n html: mensaje,\r\n allowOutsideClick: false,\r\n confirmButtonColor: '#3085d6',\r\n cancelButtonColor: '#d33',\r\n icon: tipoAlerta,\r\n confirmButtonText: 'Aceptar',\r\n }).then((result) => {\r\n return resolve(result.value)\r\n })\r\n })\r\n return ejecutarAlerta\r\n}\r\n\r\nexport function refresh(): void {\r\n window.location.reload()\r\n}\r\n\r\nexport function formatDate(date: Date): string {\r\n const year = date.getFullYear();\r\n const month = ('0' + (date.getMonth() + 1)).slice(-2)\r\n const day = ('0' + date.getDate()).slice(-2)\r\n return `${year}-${month}-${day}`\r\n}\r\n\r\nexport const constosEspeciales: number[] = [2, 3, 4];\r\nexport const constosSubEspecial: number[] = [2, 4];\r\n\r\nexport function beep() {\r\n const context = new AudioContext();\r\n const oscillator = context.createOscillator();\r\n const gainNode = context.createGain();\r\n\r\n oscillator.type = 'triangle';\r\n oscillator.frequency.value = 1040;\r\n\r\n gainNode.gain.setValueAtTime(0.4, context.currentTime);\r\n gainNode.gain.exponentialRampToValueAtTime(0.001, context.currentTime + 0.3);\r\n\r\n oscillator.connect(gainNode);\r\n gainNode.connect(context.destination);\r\n\r\n oscillator.start(context.currentTime);\r\n oscillator.stop(context.currentTime + 0.3);\r\n \r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, computed, effect, input, linkedSignal, model, output } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { DecimalDirective } from '../../../../directivas/inputs/decimal.directive';\r\nimport { OnlyNumberDirective } from '../../../../directivas/inputs/only-number.directive';\r\nimport { OnlyDayDirective } from '../../../../directivas/inputs/only-day.directive';\r\nimport { fadeInOut } from '../../../../directivas/animaciones/fade-animation';\r\nimport { getFirstItem } from '../../../../directivas/utils/general/validaciones';\r\nimport { beep } from '../../../../directivas/utils/general/utilidades';\r\n\r\n@Component({\r\n selector: 'app-input',\r\n imports: [FormsModule, CommonModule, DecimalDirective, OnlyNumberDirective, OnlyDayDirective],\r\n templateUrl: './input.component.html',\r\n styleUrl: './input.component.scss',\r\n animations: [fadeInOut]\r\n})\r\n\r\nexport class InputComponent {\r\n wlabel = input<number>(0)\r\n label = input<string>('')\r\n placeholder = input<string>('')\r\n withBuscar = input<boolean>(false)\r\n isRequired = input<boolean>(false)\r\n type = input<'text' | 'text-area' | 'date' | 'number' | 'select' | 'number-format-decimal' | 'number-integer' | 'time' | 'day'>('text')\r\n typeStandar = linkedSignal(() => this.type())\r\n position = input<'start' | 'end' | 'center'>('start')\r\n value = model<any>()\r\n position_row = input<'center' | 'start' | 'end'>('center')\r\n withChangeInput = input<boolean>(false)\r\n disabled = model<boolean>(false)\r\n isImportant = input<boolean>(false)\r\n lista = input<any[]>([])\r\n keyCodigo = input<string>('')\r\n keyDescri = input<string>('')\r\n joinInfo = input<boolean>(false)\r\n\r\n distintInputs = ['text-area', 'select', 'date', 'number-format-decimal', 'number-integer', 'time', 'day']\r\n withTodos = input<boolean>(true)\r\n allDisabled = model<boolean>(false)\r\n\r\n isVertical = input<boolean>(false)\r\n alto = input<number>(72)\r\n\r\n formatNumber = input<string>('1.2-2')\r\n blur = input<() => void>(null)\r\n\r\n invalidInput = model<boolean>(false)\r\n\r\n accion = output<void>()\r\n\r\n activeFocus = input<boolean>(true)\r\n\r\n customBorderColor = input<string>('')\r\n customBoxShadow = input<string>('')\r\n customTransition = input<string>('')\r\n\r\n maxLength = input<number>(null)\r\n\r\n valueSize = computed(() => this.value()?.length || 0)\r\n\r\n textoAyuda = input<string>('')\r\n sinAyuda = input<boolean>(false)\r\n\r\n maxWidth = input<number>()\r\n change = output<any>()\r\n\r\n firstItemDefault = input<boolean>(false)\r\n\r\n typeKey = input<'string' | 'number'>('number')\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.invalidInput()) beep()\r\n })\r\n\r\n effect(() => {\r\n const data = (this.lista() ?? [])\r\n if (data.length > 0 && this.firstItemDefault()) {\r\n const firstItem = getFirstItem(data)\r\n this.value.set(firstItem ? firstItem[this.keyCodigo()] : null)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n this.typeStandar.set(this.type())\r\n }\r\n\r\n ejecutarAccion() {\r\n this.accion.emit()\r\n }\r\n\r\n changeInput() {\r\n if (this.typeStandar() == 'select') {\r\n this.typeStandar.set('text')\r\n return\r\n }\r\n this.typeStandar.set('select')\r\n }\r\n\r\n focusInput() {\r\n this.invalidInput.set(false)\r\n }\r\n\r\n callBlur() {\r\n if (this.typeStandar() == 'day') {\r\n const val = this.value()\r\n\r\n if (!val || val.toString().trim() == '') {\r\n this.invalidInput.set(true)\r\n beep()\r\n return\r\n }\r\n\r\n const num = Number(val)\r\n if (isNaN(num) || num < 1 || num > 31) {\r\n this.invalidInput.set(true)\r\n beep()\r\n return\r\n }\r\n this.invalidInput.set(false)\r\n }\r\n\r\n if (this.blur()) this.blur()()\r\n }\r\n\r\n emitirChange() {\r\n const encontrar = this.lista().find(item => item[this.keyCodigo()] == this.value())\r\n this.change.emit(encontrar)\r\n }\r\n\r\n}\r\n","@if (isVertical()) {\r\n<label [ngClass]=\"{'text-error': isImportant()}\" for=\"{{'id_' + label()}}\" [style.min-width]=\"wlabel() + 'px'\"> {{label()}} @if (isRequired()) {<span\r\n class=\"fw-bold text-danger\">(*)</span>}</label>\r\n}\r\n<div class=\"d-flex align-items-{{position_row()}}\">\r\n @if (!isVertical()) {\r\n <label [ngClass]=\"{'text-error': isImportant()}\" for=\"{{'id_' + label()}}\" [style.min-width]=\"wlabel() + 'px'\"> {{label()}} @if (isRequired()) {<span\r\n class=\"fw-bold text-danger\">(*)</span>}</label>\r\n }\r\n <div class=\"flex-grow-1 me-2\">\r\n <div [ngClass]=\"typeStandar() == 'date' ? 'd-block' : 'd-flex'\" class=\"position-relative\">\r\n @if (!distintInputs.includes(typeStandar())) {\r\n <input [type]=\"typeStandar()\" (blur)=\"callBlur()\" class=\"form-control text-{{position()}}\"\r\n [class.text-error]=\"isImportant()\"\r\n [attr.data-active-focus]=\"activeFocus() == false ? 'false' : ''\"\r\n [style.--focus-border-color]=\"customBorderColor()\" [style.--focus-box-shadow]=\"customBoxShadow()\"\r\n [style.--focus-transition]=\"customTransition()\" [style.max-width.px]=\"maxWidth()\"\r\n (focus)=\"focusInput()\" autocomplete=\"off\" [ngClass]=\"invalidInput() ? 'input-error' : ''\"\r\n [disabled]=\"allDisabled() ? true : disabled()\" [(ngModel)]=\"value\" id=\"{{'id_' + label()}}\"\r\n name=\"{{'id_' + label()}}\" [attr.maxlength]=\"maxLength()\">\r\n }\r\n\r\n @if (typeStandar() == 'number-format-decimal') {\r\n <input type=\"text\" class=\"form-control\" (blur)=\"callBlur()\"\r\n [class.text-error]=\"isImportant()\"\r\n [attr.data-active-focus]=\"activeFocus() == false ? 'false' : ''\"\r\n [style.--focus-border-color]=\"customBorderColor()\" [style.--focus-box-shadow]=\"customBoxShadow()\"\r\n [style.--focus-transition]=\"customTransition()\" [ngClass]=\"'text-' + position()\"\r\n [style.max-width.px]=\"maxWidth()\" [disabled]=\"allDisabled() ? true : disabled()\" [(ngModel)]=\"value\"\r\n id=\"{{'id_' + label()}}\" name=\"{{'id_' + label()}}\" [appDecimal]=\"formatNumber()\" onlyNumber\r\n [attr.maxlength]=\"maxLength()\" (focus)=\"focusInput()\">\r\n }\r\n\r\n @if (typeStandar() == 'number-integer') {\r\n <input type=\"text\" class=\"form-control text-{{position()}}\" (blur)=\"callBlur()\"\r\n [class.text-error]=\"isImportant()\"\r\n [attr.data-active-focus]=\"activeFocus() == false ? 'false' : ''\"\r\n [style.--focus-border-color]=\"customBorderColor()\" [style.--focus-box-shadow]=\"customBoxShadow()\"\r\n [style.--focus-transition]=\"customTransition()\" [style.max-width.px]=\"maxWidth()\"\r\n [ngClass]=\"invalidInput() ? 'input-error' : ''\" [disabled]=\"allDisabled() ? true : disabled()\"\r\n [(ngModel)]=\"value\" id=\"{{'id_' + label()}}\" name=\"{{'id_' + label()}}\" onlyNumber\r\n [attr.maxlength]=\"maxLength()\" (focus)=\"focusInput()\">\r\n }\r\n\r\n @if (typeStandar() == 'day') {\r\n <input type=\"text\" class=\"form-control text-{{position()}}\" (blur)=\"callBlur()\"\r\n [class.text-error]=\"isImportant()\"\r\n [attr.data-active-focus]=\"activeFocus() == false ? 'false' : ''\"\r\n [style.--focus-border-color]=\"customBorderColor()\" [style.--focus-box-shadow]=\"customBoxShadow()\"\r\n [style.--focus-transition]=\"customTransition()\" [style.max-width.px]=\"maxWidth()\"\r\n [ngClass]=\"invalidInput() ? 'input-error' : ''\" [disabled]=\"allDisabled() ? true : disabled()\"\r\n [(ngModel)]=\"value\" id=\"{{'id_' + label()}}\" name=\"{{'id_' + label()}}\" onlyDay\r\n [attr.maxlength]=\"maxLength()\" (focus)=\"focusInput()\">\r\n }\r\n\r\n @if (typeStandar() == 'date') {\r\n <input type=\"date\" class=\"form-control text-{{position()}}\" (blur)=\"callBlur()\"\r\n [class.text-error]=\"isImportant()\"\r\n [attr.data-active-focus]=\"activeFocus() == false ? 'false' : ''\"\r\n [style.--focus-border-color]=\"customBorderColor()\" [style.--focus-box-shadow]=\"customBoxShadow()\"\r\n [style.--focus-transition]=\"customTransition()\" [ngClass]=\"invalidInput() ? 'input-error' : ''\"\r\n [disabled]=\"allDisabled() ? true : disabled()\" [(ngModel)]=\"value\" id=\"{{'id_' + label()}}\"\r\n name=\"{{'id_' + label()}}\" (focus)=\"focusInput()\">\r\n }\r\n\r\n @if (typeStandar() == 'time') {\r\n <input type=\"time\" class=\"form-control text-{{position()}}\" (blur)=\"callBlur()\"\r\n [class.text-error]=\"isImportant()\"\r\n [attr.data-active-focus]=\"activeFocus() == false ? 'false' : ''\"\r\n [style.--focus-border-color]=\"customBorderColor()\" [style.--focus-box-shadow]=\"customBoxShadow()\"\r\n [style.--focus-transition]=\"customTransition()\" [ngClass]=\"invalidInput() ? 'input-error' : ''\"\r\n [disabled]=\"allDisabled() ? true : disabled()\" [(ngModel)]=\"value\" id=\"{{'id_' + label()}}\"\r\n name=\"{{'id_' + label()}}\" (focus)=\"focusInput()\">\r\n }\r\n\r\n @if (typeStandar() == 'text-area') {\r\n <textarea class=\"{{'text-' + position()}} form-area\"\r\n [class.text-error]=\"isImportant()\"\r\n [attr.data-active-focus]=\"activeFocus() == false ? 'false' : ''\"\r\n [style.--focus-border-color]=\"customBorderColor()\" [style.--focus-box-shadow]=\"customBoxShadow()\"\r\n [style.--focus-transition]=\"customTransition()\" id=\"{{'id_' + label()}}\" name=\"{{'id_' + label()}}\"\r\n [disabled]=\"allDisabled() ? true : disabled()\" [(ngModel)]=\"value\" [rows]=\"alto()\"\r\n [attr.maxlength]=\"maxLength()\" (focus)=\"focusInput()\" [placeholder]=\"placeholder()\" >\r\n\r\n </textarea>\r\n }\r\n\r\n @if (typeStandar() == 'select') {\r\n <select class=\"form-select\" [attr.data-active-focus]=\"activeFocus() == false ? 'false' : ''\"\r\n [class.text-error]=\"isImportant()\"\r\n [style.--focus-border-color]=\"customBorderColor()\" [style.--focus-box-shadow]=\"customBoxShadow()\"\r\n [style.--focus-transition]=\"customTransition()\" [style.max-width.px]=\"maxWidth()\" [style.min-width.px]=\"maxWidth()\" [(ngModel)]=\"value\"\r\n [disabled]=\"allDisabled() ? true : disabled()\" id=\"{{'id_content' + label()}}\"\r\n name=\"{{'id_content' + label()}}\" (change)=\"emitirChange()\" (focus)=\"focusInput()\">\r\n @if (withTodos()) {\r\n <option [value]=\"typeKey() == 'number' ? -1 : ''\">Todos</option>\r\n }\r\n @for (item of lista(); track $index) {\r\n @if (!keyCodigo()) {\r\n <option [value]=\"item\"> {{ item }}</option>\r\n }\r\n @if (keyCodigo()) {\r\n <option [value]=\"item[keyCodigo()]\"> {{ joinInfo() ? item[keyCodigo()] + ' - ' + item[keyDescri()] :\r\n item[keyDescri()]}}</option>\r\n }\r\n\r\n }\r\n </select>\r\n }\r\n\r\n @if (withBuscar()) {\r\n <button class=\"btn btn-dark boton-buscar fs-7\" [disabled]=\"allDisabled()\" (click)=\"ejecutarAccion()\">\r\n <i class=\"fa fa-search\"></i>\r\n </button>\r\n }\r\n @if (withChangeInput()) {\r\n <button class=\"btn btn-dark boton-buscar fs-7\" [disabled]=\"allDisabled()\" (click)=\"changeInput()\">\r\n <i [ngClass]=\"typeStandar() == 'select' ? 'fas fa-times' : 'fa solid fa-pen'\"></i>\r\n </button>\r\n }\r\n @if (invalidInput()) {\r\n <div class=\"infoBox\" @fadeInOut><i class=\"fas fa-exclamation-triangle fs-9 text-danger\"></i> Ocurrió un\r\n error: El campo es obligatorio, asegúrese de ingresar datos válidos.</div>\r\n }\r\n\r\n </div>\r\n </div>\r\n</div>\r\n\r\n@if (textoAyuda() && typeStandar() == 'text-area') {\r\n<div class=\"d-flex flex-wrap justify-content-between align-items-center px-2\">\r\n <span class=\"text-error fs-6\">{{textoAyuda()}}</span>\r\n <span class=\"text-dark fs-6 fw-5\">{{ valueSize() }}/{{maxLength()}} caracteres</span>\r\n</div>\r\n}\r\n\r\n@if (sinAyuda() && typeStandar() == 'text-area') {\r\n<div class=\"d-flex flex-wrap justify-content-between align-items-center px-2\">\r\n <span class=\"text-error fs-6\"></span>\r\n <span class=\"text-dark fs-6 fw-5\">{{ valueSize() }}/{{maxLength()}} caracteres</span>\r\n</div>\r\n}","import { Component, contentChild, inject, input, output, TemplateRef } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { ButtonComponent, HeaderComponent } from '../../../../public-api';\r\n\r\n@Component({\r\n selector: 'app-md-generico',\r\n imports: [NgClass, NgTemplateOutlet, HeaderComponent, ButtonComponent],\r\n templateUrl: './md-generico.component.html',\r\n styleUrl: './md-generico.component.scss'\r\n})\r\n\r\nexport class MdGenericoComponent {\r\n\r\n // private estadoInputsService = inject(EstadoInputsService)\r\n private modalService = inject(NgbActiveModal)\r\n\r\n title = input<string>('')\r\n continuar = output<void>()\r\n continuar2 = output<void>()\r\n scrollable = input<boolean>(true)\r\n\r\n type = input<'1' | '2' | '3' | '4' | '5' | '6' | 'APROB'>('1')\r\n\r\n content = contentChild<TemplateRef<any>>(TemplateRef)\r\n showAlerta = input<boolean>(false)\r\n textAlerta = input<string>('La consulta muestra los 100 primeros registros.')\r\n sizeTitle = input<'1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'>('8')\r\n\r\n showFiltro = input<boolean>(false)\r\n rowFiltro = input<boolean>(false)\r\n dataFiltro = input<boolean>(false)\r\n\r\n emitirFiltro = output<void>()\r\n\r\n toggleFiltro() {\r\n this.emitirFiltro.emit()\r\n }\r\n\r\n // ngOnDestroy() {\r\n // this.estadoInputsService.reset('M')\r\n // }\r\n\r\n cerrarModal() {\r\n // this.estadoInputsService.reset('M')\r\n this.modalService.dismiss()\r\n }\r\n}\r\n","<div class=\"modal-header py-2\">\r\n <div class=\"w-100\">\r\n <app-header [isModal]=\"true\" (cerrarModal)=\"cerrarModal()\" [tamanio]=\"sizeTitle()\" [showAlerta]=\"showAlerta()\"\r\n [textAlerta]=\"textAlerta()\" [titulo]=\"title()\" [showFiltro]=\"showFiltro()\" [hasData]=\"dataFiltro()\"\r\n [row]=\"rowFiltro()\" [filtroInicialAbierto]=\"false\" (filtro)=\"toggleFiltro()\" />\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal-body\" [ngClass]=\"{ 'max-height': scrollable() }\">\r\n <ng-container *ngTemplateOutlet=\"content();\"></ng-container>\r\n</div>\r\n\r\n@if( type() != 'APROB'){\r\n<div class=\"modal-footer\">\r\n @if (type() == '1') {\r\n <app-button icon=\"adelante\" texto=\"Continuar\" color=\"verde\" (accion)=\"continuar.emit()\" />\r\n }\r\n @if (type() == '2') {\r\n <app-button icon=\"guardar\" texto=\"Guardar\" color=\"azul\" (accion)=\"continuar.emit()\" />\r\n }\r\n @if (type() == '3') {\r\n <app-button icon=\"imprimir\" texto=\"Imprimir\" color=\"gris\" (accion)=\"continuar.emit()\" />\r\n }\r\n @if( type() == '4'){\r\n <app-button icon=\"agregar\" texto=\"Adicionar\" color=\"verde\" (accion)=\"continuar.emit()\" />\r\n }\r\n @if( type() == '6'){\r\n <app-button icon=\"check\" texto=\"Actualizar\" color=\"azul\" (accion)=\"continuar.emit()\" />\r\n }\r\n @if( type() != '5'){\r\n <app-button icon=\"cancelar\" texto=\"Cancelar\" color=\"amarillo\" (accion)=\"cerrarModal()\" />\r\n }\r\n</div>\r\n}\r\n\r\n@if( type() == 'APROB'){\r\n<div class=\"modal-footer d-flex justify-content-center\">\r\n <app-button icon=\"aprobar\" texto=\"Aprobar\" color=\"verde\" (accion)=\"continuar.emit()\" />\r\n <app-button icon=\"desaprobar\" texto=\"Desaprobar\" color=\"rojo\" (accion)=\"continuar2.emit()\" />\r\n</div>\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, effect, inject, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { InputComponent } from '../../forms/inputs/input/input.component';\r\nimport { fadeInOut } from '../../../directivas/animaciones/fade-animation';\r\nimport { ToastService } from '../../../service/toast.service';\r\nimport { MdGenericoComponent } from '../../../modals/general/md-generico/md-generico.component';\r\n\r\n@Component({\r\n selector: 'app-alert-fecha-emision',\r\n imports: [CommonModule, FormsModule, InputComponent, MdGenericoComponent],\r\n templateUrl: './alert-fecha-emision.component.html',\r\n styleUrl: './alert-fecha-emision.component.scss',\r\n animations: [fadeInOut],\r\n})\r\nexport class AlertFechaEmisionComponent {\r\n\r\n // private recursosService = inject(RecursosService)\r\n private activeModal = inject(NgbActiveModal)\r\n private toast = inject(ToastService)\r\n\r\n fecha = signal<string>('')\r\n\r\n dataSender = signal<any>({\r\n tipcam: 0.0\r\n })\r\n\r\n // getTipoCambio() {\r\n // this.recursosService.obtenerTipoCambio(this.fecha(), this.dataSender)\r\n // }\r\n\r\n // onContinuar() {\r\n // if (!this.fecha()) {\r\n // this.toast.warning('Advertencia', 'Debe ingresar una fecha.')\r\n // return\r\n // }\r\n // if (this.dataSender().tipcam == 0.00) {\r\n // this.toast.warning('Advertencia', 'No existe tipo de cambio para la fecha seleccionada.')\r\n // return\r\n // }\r\n // this.activeModal.close(this.fecha())\r\n // }\r\n}\r\n","<app-md-generico title=\"Importante\" sizeTitle=\"9\" type=\"1\">\r\n <ng-template>\r\n <p>\r\n El tipo de cambio es un dato <b>NO MODIFICABLE</b>, asegúrese de seleccionarlo correctamente.\r\n </p>\r\n\r\n <div class=\"col-12 row mt-3\">\r\n <div class=\"col-8\">\r\n <app-input label=\"Seleccione una fecha\" [wlabel]=\"150\" type=\"date\" position=\"center\" [(value)]=\"fecha\"\r\n />\r\n </div>\r\n <div class=\"col-4\">\r\n <app-input label=\"T.C.\" [wlabel]=\"30\" [disabled]=\"true\" [(value)]=\"dataSender().tipcam\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n</app-md-generico>","import { NgClass } from '@angular/common';\r\nimport { Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-alerta',\r\n imports: [NgClass],\r\n templateUrl: './alerta.component.html',\r\n styleUrl: './alerta.component.scss'\r\n})\r\n\r\nexport class AlertaComponent {\r\n titulo = input<string>('Atención:')\r\n mensaje = input<string>('La consulta muestra los 100 primeros registros.')\r\n}\r\n","<div class=\"d-flex bg-title align-items-center flex-md-row p-2\"\r\n [ngClass]=\"{'flex-column': (titulo()?.length || 0) + (mensaje()?.length || 0) > 100}\">\r\n <i class=\"fas fa-exclamation-circle color-icon me-sm-1 mb-1 mb-sm-0\"></i>\r\n <div class=\"text-alerta text-center text-sm-start ms-1\">\r\n @if(titulo()){\r\n <strong>{{ titulo() }}</strong>\r\n }\r\n {{ mensaje() }}\r\n <ng-content></ng-content> \r\n </div>\r\n</div>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-badge',\r\n imports: [NgClass],\r\n template: `\r\n <span class=\"badge text-dark font-weight-bold me-2\" [ngClass]=\"color()\" [style.fontSize.px]=\"size()\"> {{ label() }} </span>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BadgeComponent {\r\n label = input<string>('Exp');\r\n color = input<string>('bg-warning');\r\n size = input<number>(10.5);\r\n}","import { animate, style, transition, trigger } from '@angular/animations';\r\nimport { Component, inject, input } from '@angular/core';\r\nimport { ToastService } from '../../../service/toast.service';\r\n@Component({\r\n selector: 'app-toaster',\r\n imports: [],\r\n templateUrl: './toaster.component.html',\r\n styleUrl: './toaster.component.scss',\r\n animations: [\r\n trigger('toastAnimation', [\r\n transition(':enter', [\r\n style({ transform: 'translateY(100%)', opacity: 0 }),\r\n animate('300ms ease-out', style({ transform: 'translateY(0)', opacity: 1 }))\r\n ]),\r\n transition(':leave', [\r\n animate('300ms ease-in', style({ transform: 'translateY(100%)', opacity: 0 }))\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class ToasterComponent {\r\n\r\n private toastService = inject(ToastService)\r\n\r\n toasts = this.toastService.toasts\r\n\r\n isWebPush = input<boolean>(false)\r\n\r\n iconType = {\r\n 'success': 'fas fa-check bg-success',\r\n 'error': 'fas fa-times bg-danger',\r\n 'info': 'fas fa-info bg-info',\r\n 'warning': 'fas fa-exclamation-triangle bg-warning'\r\n }\r\n\r\n get toastNormal() {\r\n return this.toasts().filter(toas => toas.type != 'webpush')\r\n }\r\n\r\n get toastWebPush() {\r\n return this.toasts().filter(toas => toas.type == 'webpush')\r\n }\r\n\r\n get hasWebPush(): boolean {\r\n return this.toasts().some(toast => toast.type == 'webpush')\r\n }\r\n\r\n removeToast(id: number) {\r\n this.toastService.remove(id)\r\n }\r\n}\r\n","<div class=\"toastr-container\">\r\n @for (toast of toastNormal; track toast.id) {\r\n <div class=\"toast {{toast.type}}\" [@toastAnimation]>\r\n <div class=\"toast-icon\">\r\n <i class=\"{{iconType[toast.type]}}\"></i>\r\n </div>\r\n <div class=\"toast-content\">\r\n <h4 class=\"toast-title\">{{ toast.title }}</h4>\r\n <p class=\"toast-message\">{{ toast.message }}</p>\r\n </div>\r\n <button class=\"toast-close\" (click)=\"removeToast(toast.id)\">×</button>\r\n <div class=\"toast-loader\"></div>\r\n </div>\r\n }\r\n</div>\r\n\r\n<div class=\"toastr-webpush shadow\">\r\n @for (toast of toastWebPush; track toast.id) {\r\n <div class=\"toast-webpush {{toast.type}}\" [@toastAnimation]>\r\n <div class=\"toast-icon\">\r\n <img src=\"https://testing.grupotsiperu.com.pe:8844/assets/images/logo-tsi-tres.png\" alt=\"\">\r\n </div>\r\n <div class=\"toast-content-webpush\">\r\n <h4 class=\"toast-title\">{{ toast.title }}</h4>\r\n <p class=\"toast-message-webpush\">{{ toast.message }}</p>\r\n <p class=\"toast-subtitle\">{{ toast.subtitle }}</p>\r\n </div>\r\n <button class=\"toast-close-webpush\" (click)=\"removeToast(toast.id)\">×</button>\r\n <div class=\"toast-loader-webpush\"></div>\r\n </div>\r\n }\r\n</div>","import { OverlayModule } from '@angular/cdk/overlay';\r\nimport { NgTemplateOutlet, NgClass } from '@angular/common';\r\nimport { Component, contentChild, input, signal, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-dropdown-cdk',\r\n imports: [OverlayModule, NgTemplateOutlet, NgClass],\r\n templateUrl: './dropdown-cdk.component.html',\r\n styleUrl: './dropdown-cdk.component.scss'\r\n})\r\nexport class DropdownCdkComponent {\r\n\r\n show = signal<boolean>(false)\r\n trigger = contentChild<TemplateRef<any>>('trigger');\r\n content = contentChild<TemplateRef<any>>('content');\r\n inline = input<boolean>(false)\r\n altoContainer = input<number>(200)\r\n}\r\n","<div class=\"w-100\">\r\n\r\n <div \r\n cdkOverlayOrigin\r\n #dropdown=\"cdkOverlayOrigin\"\r\n (click)=\"show.set(true)\"\r\n [ngClass]=\"{'d-inline-block': inline()}\">\r\n <ng-container *ngTemplateOutlet=\"trigger()\"></ng-container>\r\n </div>\r\n\r\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"dropdown\" [cdkConnectedOverlayOpen]=\"show()\"\r\n [cdkConnectedOverlayHasBackdrop]=\"true\" (backdropClick)=\"show.set(false)\"\r\n cdkConnectedOverlayPanelClass=\"autocomplete-overlay\" cdkConnectedOverlayBackdropClass=\"transparent-backdrop\">\r\n\r\n <div class=\"contenido\" [style.maxHeight.px]=\"altoContainer()\">\r\n <ng-container *ngTemplateOutlet=\"content()\"></ng-container>\r\n </div>\r\n\r\n </ng-template>\r\n</div>","import { Component, ContentChild, input, output, signal, TemplateRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { fadeInOut } from '../../../directivas/animaciones/fade-animation';\r\n\r\n@Component({\r\n selector: 'app-dropdown',\r\n imports: [CommonModule],\r\n templateUrl: './dropdown.component.html',\r\n styleUrl: './dropdown.component.scss',\r\n animations: [fadeInOut]\r\n})\r\nexport class DropdownComponent {\r\n @ContentChild('customActions', { static: false }) customActions!: TemplateRef<any>\r\n \r\n items = input<string[]>([])\r\n selected = output<string>()\r\n isOpen = signal<boolean>(false)\r\n\r\n toggleDropdown() {\r\n if (this.customActions) {\r\n this.isOpen.set(!this.isOpen())\r\n }\r\n }\r\n\r\n onDropdownClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement\r\n if (!target.closest('.close-on-click')) {\r\n this.isOpen.set(false)\r\n }\r\n }\r\n\r\n selectItem(item: string) {\r\n this.selected.emit(item)\r\n this.isOpen.set(false)\r\n }\r\n}\r\n","<div class=\"menu-content\" (click)=\"toggleDropdown()\">\r\n <button class=\"toggle\">\r\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\r\n </button>\r\n @if (isOpen()) {\r\n <div class=\"menu-desplegable top-right\" @fadeInOut (click)=\"onDropdownClick($event)\">\r\n <ng-container *ngTemplateOutlet=\"customActions; context: { $implicit: '' }\"></ng-container>\r\n </div>\r\n } \r\n </div>","import { CommonModule } from '@angular/common';\r\nimport { Component, input, output, signal, effect } from '@angular/core';\r\nimport { ButtonComponent } from '../button/button.component';\r\nimport { AlertaComponent } from \"../../alerts/alerta/alerta.component\";\r\n\r\n@Component({\r\n selector: 'app-header',\r\n imports: [CommonModule, ButtonComponent, AlertaComponent],\r\n templateUrl: './header.component.html',\r\n styleUrl: './header.component.scss'\r\n})\r\n\r\nexport class HeaderComponent {\r\n\r\n titulo = input<string>('')\r\n row = input<boolean>(false)\r\n tamanio = input<string>('7')\r\n\r\n filtro = output<void>()\r\n filtroInicialAbierto = input<boolean>(true)\r\n filtroAbierto = signal(false)\r\n showFiltro = input<boolean>(true)\r\n hasData = input<boolean>(false)\r\n\r\n isModal = input<boolean>(false)\r\n cerrarModal = output<void>()\r\n\r\n showAlerta = input<boolean>(false)\r\n textAlerta = input<string>('La consulta muestra los 100 primeros registros.')\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.row() && this.filtroInicialAbierto()) {\r\n this.filtroAbierto.set(true)\r\n } else {\r\n this.filtroAbierto.set(false)\r\n }\r\n })\r\n }\r\n\r\n toggleFiltro() {\r\n if (this.row() && this.hasData()) {\r\n this.filtroAbierto.update(value => !value)\r\n this.ejecutarFiltro()\r\n }\r\n }\r\n\r\n ejecutarFiltro() {\r\n this.filtro.emit()\r\n }\r\n\r\n cerrar() {\r\n this.cerrarModal.emit()\r\n }\r\n}","<div class=\"d-flex justify-content-between align-items-center position-relative flex-wrap\">\r\n <div (click)=\"toggleFiltro()\" [ngClass]=\"{ 'cursor-pointer': !isModal() }\" class=\"d-flex align-items-center mb-2\">\r\n <h5 class=\"fw-bold pe-2\" [ngClass]=\"['fs-' + tamanio(), isModal() ? 'pt-3' : 'pt-2']\">\r\n {{ titulo() }}\r\n </h5>\r\n @if(showFiltro()){\r\n <div [ngClass]=\"{'pt-2': isModal()}\">\r\n <i class=\"fa-solid fa-filter px-2 me-1\" [class]=\"'fs-' + tamanio()\"\r\n [ngClass]=\"{ 'disabled-icon': !row() }\"></i>\r\n\r\n <i class=\"icon-arrow fa-solid fa-chevron-down\"\r\n [ngClass]=\"{ 'rotate-up': filtroAbierto(), 'disabled-icon': !row()}\"></i>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"header-actions\">\r\n @if (showAlerta()) {\r\n <app-alerta [mensaje]=\"textAlerta()\" />\r\n }\r\n @if(isModal()){\r\n <app-button icon=\"cerrar\" [closeButton]=\"true\" (accion)=\"cerrar()\" />\r\n }\r\n </div>\r\n</div>","import { Component, effect, ElementRef, input, model, output, QueryList, signal, ViewChildren } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { Subject, debounceTime, distinctUntilChanged } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-autocomplete',\r\n imports: [NgClass, FormsModule],\r\n templateUrl: './autocomplete.component.html',\r\n styleUrl: './autocomplete.component.scss',\r\n})\r\n\r\nexport class AutocompleteComponent {\r\n\r\n private searchByIdSubject = new Subject<string>()\r\n\r\n @ViewChildren('autocompleteItem') autocompleteItems!: QueryList<ElementRef>\r\n\r\n wlabel = input<number>(0)\r\n label = input<string>('')\r\n isRequired = input<boolean>(false)\r\n lista = input<any[]>([])\r\n filteredItems = signal<any[]>([])\r\n searchText = model<string>('')\r\n selectedItem = signal<any>({})\r\n showDropdown = signal<boolean>(false)\r\n\r\n keyCodigo = input<string>('')\r\n keyDescri = input<string>('')\r\n\r\n withTodos = input<boolean>(false)\r\n valuecod = model<any>()\r\n searchIdText = model<string>('')\r\n\r\n disabled1 = model<boolean>()\r\n disabled2 = model<boolean>()\r\n\r\n isVertical = input<boolean>(false)\r\n showId = input<boolean>(false)\r\n highlightedIndex = signal<number>(-1)\r\n joinInfo = input<boolean>(false)\r\n\r\n changeInput = output<void>()\r\n\r\n activeFocus = input<boolean>(true)\r\n\r\n customBorderColor = input<string>('')\r\n customBoxShadow = input<string>('')\r\n customTransition = input<string>('')\r\n\r\n constructor() {\r\n this.searchByIdSubject.pipe(\r\n debounceTime(300),\r\n distinctUntilChanged()\r\n ).subscribe(id => this.handleSearchById(id))\r\n effect(() => {\r\n const lista = this.lista()\r\n const id = this.valuecod()\r\n\r\n if (lista.length > 0) {\r\n if (id == 'noption' || id == null || id == undefined || id == '') {\r\n this.clearInputFields()\r\n this.searchIdText.set('')\r\n } else {\r\n const item = lista.find(it => String(it[this.keyCodigo()]) == String(id))\r\n if (item) {\r\n this.updateFieldsForItem(item)\r\n } else {\r\n this.searchIdText.set(String(id))\r\n this.searchText.set('')\r\n this.selectedItem.set({})\r\n }\r\n }\r\n }\r\n })\r\n }\r\n\r\n onSearch() {\r\n const searchTerm = this.searchText().trim()\r\n if (searchTerm == '') {\r\n this.filteredItems.set([...this.lista()])\r\n if (this.joinInfo()) {\r\n this.valuecod.set('noption')\r\n }\r\n } else {\r\n const filtered = this.lista().filter(item => {\r\n const matchesEntrada = item[this.keyDescri()].toLowerCase().includes(searchTerm.toLowerCase())\r\n\r\n if (this.joinInfo()) {\r\n const matchesSalida = String(item[this.keyCodigo()]).toLowerCase().includes(searchTerm.toLowerCase())\r\n return matchesEntrada || matchesSalida\r\n }\r\n\r\n return matchesEntrada\r\n })\r\n\r\n this.filteredItems.set(filtered)\r\n\r\n if (this.joinInfo() && filtered.length == 0) {\r\n this.valuecod.set('noption')\r\n }\r\n }\r\n this.highlightedIndex.set(-1)\r\n this.showDropdown.set(this.filteredItems().length > 0)\r\n }\r\n\r\n onSearchById() {\r\n this.searchByIdSubject.next(this.searchIdText().trim())\r\n }\r\n\r\n onClick() {\r\n if (this.showDropdown()) {\r\n this.showDropdown.set(false)\r\n } else {\r\n this.filteredItems.set([...this.lista()])\r\n this.showDropdown.set(true)\r\n }\r\n }\r\n\r\n selectItem(item: any) {\r\n this.selectedItem.set(item)\r\n this.valuecod.set(item[this.keyCodigo()])\r\n this.updateFieldsForItem(item)\r\n this.showDropdown.set(false)\r\n this.emitirChange()\r\n }\r\n\r\n onKeyDown(event: KeyboardEvent) {\r\n const items = this.filteredItems()\r\n if (!items.length) return\r\n\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n event.preventDefault()\r\n this.highlightedIndex.update(i => (i + 1) % items.length)\r\n this.scrollToItem(this.highlightedIndex())\r\n break\r\n case 'ArrowUp':\r\n event.preventDefault()\r\n this.highlightedIndex.update(i => (i - 1 + items.length) % items.length)\r\n this.scrollToItem(this.highlightedIndex())\r\n break\r\n case 'Enter':\r\n event.preventDefault()\r\n if (this.highlightedIndex() >= 0) {\r\n this.selectItem(items[this.highlightedIndex()])\r\n }\r\n break\r\n }\r\n }\r\n\r\n handleSearchById(id: string) {\r\n if (id == '') {\r\n this.clearInputFields()\r\n this.valuecod.set('noption')\r\n return\r\n }\r\n\r\n const itemExists = this.lista().some(it => String(it[this.keyCodigo()]) == id)\r\n\r\n if (!itemExists) {\r\n this.valuecod.set('noption')\r\n this.searchIdText.set(id)\r\n this.searchText.set('')\r\n this.selectedItem.set({})\r\n return\r\n }\r\n\r\n this.valuecod.set(id)\r\n const item = this.lista().find(it => String(it[this.keyCodigo()]) == id)\r\n if (item) {\r\n this.updateFieldsForItem(item)\r\n } else {\r\n this.searchIdText.set(id)\r\n this.searchText.set('')\r\n this.selectedItem.set({})\r\n }\r\n }\r\n\r\n updateFieldsForItem(item: any) {\r\n this.selectedItem.set(item)\r\n this.searchIdText.set(item[this.keyCodigo()])\r\n this.searchText.set(\r\n this.joinInfo()\r\n ? `${item[this.keyCodigo()]} - ${item[this.keyDescri()]}`\r\n : item[this.keyDescri()]\r\n )\r\n }\r\n\r\n clearInputFields() {\r\n this.searchText.set('')\r\n this.selectedItem.set({})\r\n }\r\n\r\n scrollToItem(index: number) {\r\n const itemElement = this.autocompleteItems?.toArray()[index]?.nativeElement\r\n itemElement?.scrollIntoView({ block: 'nearest', behavior: 'smooth' })\r\n }\r\n\r\n emitirChange() {\r\n this.changeInput.emit()\r\n }\r\n}","@if (isVertical()) {\r\n<label for=\"{{'id_' + label()}}\" [style.min-width]=\"wlabel() + 'px'\"> {{label()}} @if (isRequired()) {<span\r\n class=\"fw-bold text-danger\">(*)</span>}</label>\r\n}\r\n<div class=\"d-flex align-items-center\">\r\n @if (!isVertical()) {\r\n <label for=\"{{'id_' + label()}}\" [style.min-width]=\"wlabel() + 'px'\">{{label()}} @if (isRequired()) { <span\r\n class=\"fw-bold text-danger\">(*)</span>}</label>\r\n }\r\n\r\n <div class=\"autocomplete d-flex \">\r\n @if(showId()){\r\n <div class=\"content-1 me-1\">\r\n <input type=\"text\" class=\"form-control show-input\"\r\n [attr.data-active-focus]=\"activeFocus() == false ? 'false' : ''\"\r\n [style.--focus-border-color]=\"customBorderColor()\" [style.--focus-box-shadow]=\"customBoxShadow()\"\r\n [style.--focus-transition]=\"customTransition()\" [disabled]=\"disabled1()\" [(ngModel)]=\"searchIdText\"\r\n (input)=\"onSearchById()\" id=\"{{'id_' + label()}}\" name=\"{{'id_' + label()}}\" />\r\n </div>\r\n }\r\n\r\n <div class=\"input-container content-2 me-2\">\r\n <input type=\"text\" [(ngModel)]=\"searchText\" class=\"form-select\"\r\n [attr.data-active-focus]=\"activeFocus() == false ? 'false' : ''\"\r\n [style.--focus-border-color]=\"customBorderColor()\" [style.--focus-box-shadow]=\"customBoxShadow()\"\r\n [style.--focus-transition]=\"customTransition()\" [disabled]=\"disabled2()\" (input)=\"onSearch()\"\r\n (blur)=\"showDropdown.set(false)\" (click)=\"onClick()\" (keydown)=\"onKeyDown($event)\" />\r\n <ul [class.show]=\"showDropdown()\">\r\n @for (item of filteredItems(); track $index) {\r\n <li #autocompleteItem\r\n [ngClass]=\"{'fw-bold': selectedItem()[keyCodigo()] == item[keyCodigo()], 'bg-primary text-white': highlightedIndex() == $index}\"\r\n (mousedown)=\"selectItem(item)\">\r\n @if (joinInfo()) {\r\n {{ item[keyCodigo()] }} - {{ item[keyDescri()] }}\r\n } @else{\r\n {{ item[keyDescri()] }}\r\n }\r\n @if (selectedItem()[keyCodigo()] == item[keyCodigo()]) {\r\n <i class=\"far fa-check-circle fw-bold text-success cw-20\"></i>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n</div>","import { Component, input, model, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-check-box',\r\n imports: [FormsModule],\r\n templateUrl: './check-box.component.html',\r\n styleUrl: './check-box.component.scss'\r\n})\r\nexport class CheckBoxComponent {\r\n name = input<string>()\r\n id = input<string>()\r\n label = input<string>()\r\n value = input<any>()\r\n disabled = input<boolean>(false)\r\n binding = model<any>()\r\n\r\n}\r\n","<div class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [name]=\"name()\" [id]=\"id()\" [value]=\"value()\"\r\n [(ngModel)]=\"binding\" [disabled]=\"disabled()\">\r\n <label class=\"form-check-label cursor-pointer\" [for]=\"id()\">\r\n {{ label() }}\r\n </label>\r\n</div>","import { Component, computed, effect, ElementRef, input, model, output, QueryList, signal, viewChild, ViewChildren } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { CheckBoxComponent } from \"../check-box/check-box.component\";\r\nimport { fadeInOut } from '../../../../directivas/animaciones/fade-animation';\r\n\r\n@Component({\r\n selector: 'app-autocomplete-v2',\r\n imports: [NgClass, FormsModule, OverlayModule, CheckBoxComponent],\r\n templateUrl: './autocomplete.component.html',\r\n styleUrl: './autocomplete.component.scss',\r\n animations:[fadeInOut]\r\n})\r\n\r\nexport class AutocompleteV2Component {\r\n\r\n @ViewChildren('autocompleteItem') autocompleteItems!: QueryList<ElementRef>\r\n inputRef = viewChild<ElementRef>('inputRef')\r\n withInput = signal<number>(null)\r\n\r\n inputFocus = signal<boolean>(false)\r\n wlabel = input<number>(0)\r\n label = input<string>('')\r\n isRequired = input<boolean>(false)\r\n showDropdown = signal<boolean>(false)\r\n\r\n keyCodigo = input<string>('')\r\n keyDescri = input<string>('')\r\n\r\n withTodos = input<boolean>(false)\r\n searchIdText = model<string>('')\r\n\r\n disabled1 = model<boolean>()\r\n disabled2 = model<boolean>()\r\n\r\n isVertical = input<boolean>(false)\r\n highlightedIndex = signal<number>(-1)\r\n joinInfo = input<boolean>(false)\r\n\r\n changeInput = output<void>()\r\n activeFocus = input<boolean>(true)\r\n customBorderColor = input<string>('')\r\n customBoxShadow = input<string>('')\r\n customTransition = input<string>('')\r\n\r\n // NUEVAS VARIABLES\r\n lista = input<any[]>([])\r\n filteredItems = computed(() => this.filterList(this.searchText())) \r\n type = input<'simple'| 'doble'>('simple')\r\n computedType = computed(() => this.type() == 'doble')\r\n\r\n value = model<any>(null)\r\n searchText = model<string>('')\r\n listaMap = computed(() => this.toKeyValue(this.lista(), this.keyCodigo(), this.keyDescri()))\r\n withCheckTodos = input<boolean>(false)\r\n\r\n allDisabled = model<boolean>()\r\n altoContainer = input<number>(200)\r\n\r\n private resizeObserver?: ResizeObserver;\r\n\r\n constructor() {\r\n effect(() => {\r\n const map = this.listaMap()\r\n if(Object.keys(map).length == 0) return;\r\n this.blurKey()\r\n })\r\n\r\n effect(() => {\r\n const el = this.inputRef()?.nativeElement;\r\n if (!el) return;\r\n this.resizeObserver?.disconnect();\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.withInput.set(el.offsetWidth);\r\n });\r\n this.resizeObserver.observe(el);\r\n this.withInput.set(el.offsetWidth);\r\n })\r\n }\r\n\r\n filterList (text: string) {\r\n const searchTerm = text.trim().toLowerCase()\r\n return this.lista().filter(item => item[this.keyDescri()].toLowerCase().includes(searchTerm))\r\n }\r\n\r\n selectItem(item: any) {\r\n this.value.set(item[this.keyCodigo()])\r\n this.searchText.set(item[this.keyDescri()])\r\n this.showDropdown.set(false)\r\n }\r\n\r\n blurKey() {\r\n this.searchText.set(this.listaMap()[this.value()] ?? '')\r\n }\r\n\r\n get descriSelected() {\r\n return this.listaMap()[this.value()] ?? '';\r\n }\r\n\r\n toKeyValue<T extends Record<string, any>, K extends keyof T, V extends keyof T>(\r\n arr: T[],\r\n keyField: K,\r\n valueField: V\r\n): Record<T[K] & (string | number), T[V]> {\r\n return arr.reduce((acc, item) => {\r\n acc[item[keyField]] = item[valueField];\r\n return acc;\r\n }, {} as Record<T[K] & (string | number), T[V]>);\r\n}\r\n clear() {\r\n this.searchText.set('')\r\n this.value.set(null)\r\n }\r\n\r\n onKeyDown(event: KeyboardEvent) {\r\n const items = this.filteredItems()\r\n if (!items.length) return\r\n\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n event.preventDefault()\r\n this.highlightedIndex.update(i => (i + 1) % items.length)\r\n this.scrollToItem(this.highlightedIndex())\r\n break\r\n case 'ArrowUp':\r\n event.preventDefault()\r\n this.highlightedIndex.update(i => (i - 1 + items.length) % items.length)\r\n this.scrollToItem(this.highlightedIndex())\r\n break\r\n case 'Enter':\r\n event.preventDefault()\r\n if (this.highlightedIndex() >= 0) {\r\n this.selectItem(items[this.highlightedIndex()])\r\n }\r\n break\r\n }\r\n }\r\n\r\n scrollToItem(index: number) {\r\n const itemElement = this.autocompleteItems?.toArray()[index]?.nativeElement\r\n itemElement?.scrollIntoView({ block: 'nearest', behavior: 'smooth' })\r\n }\r\n}","@if (isVertical()) {\r\n<label for=\"{{'id_' + label()}}\" [style.min-width]=\"wlabel() + 'px'\"> {{label()}} @if (isRequired()) {<span\r\n class=\"fw-bold text-danger\">(*)</span>}</label>\r\n}\r\n<div class=\"d-flex align-items-center\">\r\n @if (!isVertical()) {\r\n <label for=\"{{'id_' + label()}}\" [style.min-width]=\"wlabel() + 'px'\">{{label()}} @if (isRequired()) { <span\r\n class=\"fw-bold text-danger\">(*)</span>}</label>\r\n }\r\n\r\n <div class=\"autocomplete d-flex \">\r\n @if(computedType()){\r\n <div class=\"content-1 me-1\">\r\n <input type=\"text\" class=\"form-control show-input\"\r\n [attr.data-active-focus]=\"activeFocus() == false ? 'false' : ''\"\r\n [style.--focus-border-color]=\"customBorderColor()\" [style.--focus-box-shadow]=\"customBoxShadow()\"\r\n [style.--focus-transition]=\"customTransition()\" [disabled]=\"allDisabled() ? true : disabled1()\"\r\n [(ngModel)]=\"value\" (blur)=\"blurKey()\" id=\"{{'id_' + label()}}\" name=\"{{'id_' + label()}}\" />\r\n </div>\r\n }\r\n\r\n <div class=\"input-container content-2 me-2\">\r\n <input type=\"text\" [(ngModel)]=\"searchText\" class=\"form-control pe-4\" cdkOverlayOrigin\r\n #autocomplete=\"cdkOverlayOrigin\" #inputRef [attr.data-active-focus]=\"activeFocus() == false ? 'false' : ''\"\r\n [style.--focus-border-color]=\"customBorderColor()\" [style.--focus-box-shadow]=\"customBoxShadow()\"\r\n [style.--focus-transition]=\"customTransition()\" [disabled]=\"allDisabled() ? true : disabled2()\" (input)=\"null\"\r\n (blur)=\"showDropdown.set(false)\" (focus)=\"showDropdown.set(true)\" (keydown)=\"onKeyDown($event)\" />\r\n @if (searchText().length > 0) {\r\n <button @fadeInOut type=\"button\" class=\"btn-clear text-dark\" (click)=\"clear(); inputRef.focus()\">\r\n ×\r\n </button>\r\n }\r\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"autocomplete\"\r\n [cdkConnectedOverlayOpen]=\"showDropdown()\" [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n [cdkConnectedOverlayWidth]=\"withInput()\" (backdropClick)=\"showDropdown.set(false)\"\r\n cdkConnectedOverlayPanelClass=\"autocomplete-overlay\" cdkConnectedOverlayBackdropClass=\"transparent-backdrop\">\r\n\r\n <ul [style.maxHeight.px]=\"altoContainer()\">\r\n @for (item of filteredItems(); track $index) {\r\n <li #autocompleteItem class=\"text-dark\"\r\n [ngClass]=\"{'fw-bold': item[keyCodigo()] == value(), 'bg-primary text-white': highlightedIndex() == $index}\"\r\n (mousedown)=\"selectItem(item)\">\r\n @if (joinInfo()) {\r\n {{ item[keyCodigo()] }} - {{ item[keyDescri()] }}\r\n } @else{\r\n {{ item[keyDescri()] }}\r\n }\r\n @if (item[keyCodigo()] == value()) {\r\n <i class=\"far fa-check-circle fw-bold text-success cw-20\"></i>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n </ng-template>\r\n </div>\r\n @if (withCheckTodos()) {\r\n <div class=\"px-2\"> <app-check-box label=\"Todos\" name=\"check_todos\" [value]=\"true\" [(binding)]=\"allDisabled\"\r\n (bindingChange)=\"value.set('');\" /></div>\r\n }\r\n </div>\r\n</div>","\r\nimport { Component, effect, inject, input, model, output } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { fadeInOut } from '../../../../directivas/animaciones/fade-animation';\r\nimport { ToastService } from '../../../../service/toast.service';\r\nimport { getFirstItem } from '../../../../directivas/utils/general/validaciones';\r\nimport { beep } from '../../../../directivas/utils/general/utilidades';\r\n\r\n@Component({\r\n selector: 'app-doble-input',\r\n imports: [FormsModule],\r\n templateUrl: './doble-input.component.html',\r\n styleUrl: './doble-input.component.scss',\r\n animations: [fadeInOut]\r\n})\r\n\r\nexport class DobleInputComponent {\r\n\r\n wlabel = input<number>(0)\r\n label = input<string>('')\r\n withBuscar = input<boolean>(false)\r\n withBuscar2 = input<boolean>(false)\r\n isRequired = input<boolean>(false)\r\n tipoInput2 = input<number>(1)\r\n lista = input<any[]>([])\r\n keyCodigo = input<string>('')\r\n keyDescri = input<string>('')\r\n joinInfo = input<boolean>(false)\r\n isVertical = input<boolean>(false)\r\n withTodos = input<boolean>(true)\r\n\r\n firstItemDefault = input<boolean>(false)\r\n\r\n disabled1 = model<boolean>()\r\n disabled2 = model<boolean>()\r\n\r\n value = model<any>()\r\n value2 = model<any>()\r\n\r\n changeInput = output<void>()\r\n activeFocus = input<boolean>(true)\r\n\r\n customBorderColor = input<string>('')\r\n customBoxShadow = input<string>('')\r\n customTransition = input<string>('')\r\n\r\n maxLength = input<number>(null)\r\n listName = input<string>('')\r\n invalidInput = model<boolean>(false)\r\n\r\n accion1 = output<void>()\r\n accion2 = output<void>()\r\n\r\n blur1 = input<() => void>(null)\r\n enter1 = input<() => void>(null)\r\n\r\n blur2 = input<() => void>(null)\r\n enter2 = input<() => void>(null)\r\n\r\n typeKey = input<'string' | 'number'>('number')\r\n\r\n isModal = input<boolean>(false)\r\n\r\n get joinInfoReal(): boolean {\r\n const isSmallScreen = window.innerWidth < 443\r\n return isSmallScreen ? true : this.joinInfo()\r\n }\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.invalidInput()) beep()\r\n })\r\n\r\n effect(() => {\r\n const data = (this.lista() ?? [])\r\n if (data.length > 0 && this.firstItemDefault()) {\r\n const firstItem = getFirstItem(data)\r\n this.value.set(firstItem ? firstItem[this.keyCodigo()] : null)\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n // if (this.tipoInput2() == 2 && this.lista()) {\r\n // const context = this.isModal() ? 'M' : undefined \r\n // this.estadoInputsService.registerDoubleInput(() => this.validate(), context)\r\n // }\r\n }\r\n\r\n // validate(): boolean {\r\n // const validations: ValidationConfig[] = this.buildValidations()\r\n // const isValid = validations.length == 0 || validateSelection(this.toast, validations)\r\n // return isValid\r\n // }\r\n\r\n emitirChange() {\r\n this.changeInput.emit()\r\n }\r\n\r\n // buildValidations(): ValidationConfig[] {\r\n // const validations: ValidationConfig[] = []\r\n // const fieldName = this.listName() || this.label()\r\n\r\n // if (this.isRequired()) {\r\n // validations.push({\r\n // value: this.value(),\r\n // listName: fieldName,\r\n // validationType: 'required',\r\n // requiredMessage: `El campo ${fieldName} es obligatorio`\r\n // })\r\n // }\r\n\r\n // if (this.shouldValidateList()) {\r\n // validations.push({\r\n // list: this.lista(),\r\n // value: this.value(),\r\n // listName: fieldName,\r\n // key: this.keyCodigo(),\r\n // validationType: 'list'\r\n // })\r\n // }\r\n // return validations\r\n // }\r\n\r\n // shouldValidateList(): boolean {\r\n // const value = this.value()\r\n // return value != null && value != undefined && value != '' && value != -1\r\n // }\r\n}\r\n","@if (isVertical()) {\r\n<label for=\"{{'id_' + label()}}\" [style.min-width]=\"wlabel() + 'px'\"> {{label()}} @if (isRequired()) {<span\r\n class=\"fw-bold text-danger\">(*)</span>}</label>\r\n}\r\n<div class=\"d-flex align-items-center\">\r\n @if (!isVertical()) {\r\n <label for=\"{{'id_' + label()}}\" [style.min-width]=\"wlabel() + 'px'\"> {{label()}} @if (isRequired()) {<span\r\n class=\"fw-bold text-danger\">(*)</span>}</label>\r\n }\r\n <div class=\"content-1 me-1\">\r\n <input type=\"text\" class=\"form-control show-input\"\r\n (blur)=\"blur1()?.()\" (keyup.enter)=\"enter1()?.()\"\r\n [attr.data-active-focus]=\"activeFocus() == false ? 'false' : ''\"\r\n [style.--focus-border-color]=\"customBorderColor()\" [style.--focus-box-shadow]=\"customBoxShadow()\"\r\n [style.--focus-transition]=\"customTransition()\" [disabled]=\"disabled1()\" [(ngModel)]=\"value\"\r\n id=\"{{'id_' + label()}}\" name=\"{{'id_' + label()}}\" [attr.maxlength]=\"maxLength()\" (focus)=\"invalidInput.set(false)\">\r\n @if (withBuscar()) {\r\n <button class=\"btn btn-dark boton-buscar fs-7\" (click)=\"accion1.emit()\">\r\n <i class=\"fa fa-search\"></i>\r\n </button>\r\n }\r\n </div>\r\n\r\n <div class=\"w-100\">\r\n <div class=\"content-2 position-relative me-2\">\r\n @if (tipoInput2() == 2) {\r\n <select class=\"form-select\" [attr.data-active-focus]=\"activeFocus() == false ? 'false' : ''\"\r\n [style.--focus-border-color]=\"customBorderColor()\" [style.--focus-box-shadow]=\"customBoxShadow()\"\r\n [style.--focus-transition]=\"customTransition()\" [(ngModel)]=\"value\" [disabled]=\"disabled2()\"\r\n id=\"{{'id_content' + label()}}\" name=\"{{'id_content' + label()}}\" (change)=\"emitirChange()\" (focus)=\"invalidInput.set(false)\">\r\n @if (withTodos()) {\r\n <option [value]=\"typeKey() == 'number' ? -1 : ''\">Todos</option>\r\n }\r\n @for (item of lista(); track $index) {\r\n <option [value]=\"item[keyCodigo()]\"> {{ joinInfoReal ? item[keyCodigo()] + ' - ' + item[keyDescri()] :\r\n item[keyDescri()]}}</option>\r\n }\r\n </select>\r\n }\r\n @if (tipoInput2() == 1) {\r\n <input type=\"text\" class=\"form-control\" (blur)=\"blur2()?.()\" (keyup.enter)=\"enter2()?.()\" [attr.data-active-focus]=\"activeFocus() == false ? 'false' : ''\"\r\n [style.--focus-border-color]=\"customBorderColor()\" [style.--focus-box-shadow]=\"customBoxShadow()\"\r\n [style.--focus-transition]=\"customTransition()\" [disabled]=\"disabled2()\" id=\"{{'id_content' + label()}}\"\r\n [(ngModel)]=\"value2\"\r\n name=\"{{'id_content' + label()}}\" [attr.maxlength]=\"maxLength()\" (focus)=\"invalidInput.set(false)\">\r\n }\r\n @if (withBuscar2()) {\r\n <button class=\"btn btn-dark boton-buscar fs-7\" (click)=\"accion2.emit()\">\r\n <i class=\"fa fa-search\"></i>\r\n </button>\r\n } \r\n @if (invalidInput()) {\r\n <div class=\"infoBox\" @fadeInOut><i class=\"fas fa-exclamation-triangle fs-9 text-danger\"></i> Ocurrió un\r\n error: El campo es obligatorio, asegúrese de ingresar datos válidos.</div>\r\n }\r\n\r\n </div>\r\n </div>\r\n \r\n</div>","import { Component, computed, input, model, output } from '@angular/core';\r\nimport { InputComponent } from \"../input/input.component\";\r\nimport { DobleInputComponent } from \"../doble-input/doble-input.component\";\r\nimport { obtenerTipoClases } from '../../../../directivas/utils/general/funciones';\r\n\r\n@Component({\r\n selector: 'app-input-clase',\r\n imports: [InputComponent, DobleInputComponent],\r\n templateUrl: './input-clase.component.html',\r\n styleUrl: './input-clase.component.scss'\r\n})\r\nexport class InputClaseComponent {\r\n\r\n title = input<string>('')\r\n item = input<any>(null)\r\n required = input<boolean>(false)\r\n onBlur = output<void>();\r\n wlabel = input<number>(350)\r\n tipoInput = computed(() => this.item() ? this.getClase(this.item()) : '');\r\n\r\n value = model<string>('')\r\n\r\n\r\n getClase(data: any): string {\r\n return obtenerTipoClases(data);\r\n }\r\n\r\n}\r\n","\r\n<div class=\"col-md-8 pt-1\">\r\n @switch (tipoInput()) {\r\n @case ('vchar') {\r\n <app-input [label]=\"title()\" [isRequired]=\"required()\" [maxLength]=\"1\" (onBlur)=\"onBlur.emit()\" [wlabel]=\"wlabel()\" [(value)]=\"value\" />\r\n }\r\n @case ('vstrg') {\r\n <app-input [label]=\"title()\" [isRequired]=\"required()\" [maxLength]=\"80\" (onBlur)=\"onBlur.emit()\" [wlabel]=\"wlabel()\" [(value)]=\"value\"/>\r\n }\r\n @case ('ventero') {\r\n <app-input [label]=\"title()\" [isRequired]=\"required()\" position=\"end\" type=\"number-integer\" (onBlur)=\"onBlur.emit()\" [wlabel]=\"wlabel()\" [(value)]=\"value\"/>\r\n }\r\n @case ('vreal') {\r\n <app-input [label]=\"title()\" [isRequired]=\"required()\" position=\"end\" type=\"number-format-decimal\" (onBlur)=\"onBlur.emit()\" [wlabel]=\"wlabel()\" [(value)]=\"value\"/>\r\n }\r\n @case ('vdate') {\r\n <app-input [label]=\"title()\" [isRequired]=\"required()\" (onBlur)=\"onBlur.emit()\" type=\"date\" [wlabel]=\"wlabel()\" [(value)]=\"value\"/>\r\n }\r\n @case ('vtime') {\r\n <app-input [label]=\"title()\" [isRequired]=\"required()\" (onBlur)=\"onBlur.emit()\" type=\"date\" [wlabel]=\"wlabel()\" [(value)]=\"value\"/>\r\n }\r\n @case ('vglosa') {\r\n <app-input [label]=\"title()\" [isRequired]=\"required()\" (onBlur)=\"onBlur.emit()\" type=\"text-area\" [alto]=\"5\" [maxLength]=\"500\" [wlabel]=\"wlabel()\" [(value)]=\"value\"/>\r\n }\r\n @case ('codigo') {\r\n <app-doble-input [label]=\"title()\" [isRequired]=\"required()\" [tipoInput2]=\"2\" [withTodos]=\"false\" keyCodigo=\"codigo\" keyDescri=\"descri\" [lista]=\"item().codigos\" (onBlur)=\"onBlur.emit()\" [wlabel]=\"wlabel()\" [(value)]=\"value\"></app-doble-input>\r\n }\r\n }\r\n \r\n</div>\r\n","import { Component, input, model } from '@angular/core';\r\nimport { InputConfig } from '../../../../models/input-config';\r\nimport { InputComponent } from \"../input/input.component\";\r\n\r\n@Component({\r\n selector: 'app-input-dinamico',\r\n imports: [InputComponent],\r\n templateUrl: './input-dinamico.component.html',\r\n styleUrl: './input-dinamico.component.scss'\r\n})\r\nexport class InputDinamicoComponent {\r\n\r\n inputs = input<InputConfig[]>([])\r\n sender = model<any>()\r\n}\r\n\r\n\r\n","@for (input of inputs(); track $index) {\r\n<div class=\"{{ input.class }}\">\r\n @switch (input.modelo) { \r\n @case ('input-buscar') {\r\n <!-- <app-doble-input-buscar\r\n label=\"{{ input.label }}\"\r\n [(disabled)]=\"input.disabled\"\r\n [isRequired]=\"input.required\"\r\n [wlabel]=\"input.wlabel\"\r\n [maxLength]=\"input.maxlen\"\r\n [(valuecod)]=\"sender()[input.fieldname]\"\r\n [type]=\"input.buscar\"\r\n [oneinput]=\"true\"\r\n [withBuscar2]=\"true\"\r\n [joinInfo]=\"input.joinInfo\"\r\n [withBuscar]=\"true\"\r\n [viewInput]=\"input.viewInput\"\r\n /> -->\r\n }\r\n @default {\r\n <app-input\r\n label=\"{{ input.label }}\"\r\n [(disabled)]=\"input.disabled\"\r\n [isRequired]=\"input.required\"\r\n [wlabel]=\"input.wlabel\"\r\n [maxLength]=\"input.maxlen\"\r\n [(value)]=\"sender()[input.fieldname]\"\r\n [position]=\"input.position\"\r\n [type]=\"input.type\"\r\n [lista]=\"input.lista\"\r\n [keyCodigo]=\"input.keyCodigo\"\r\n [keyDescri]=\"input.keyDescri\"\r\n [withTodos]=\"input.withTodos\"\r\n [joinInfo]=\"input.joinInfo\"\r\n />\r\n } \r\n\r\n }\r\n \r\n</div>\r\n}\r\n","import { Component, input, model, output } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-radio',\r\n imports: [FormsModule],\r\n templateUrl: './radio.component.html',\r\n styleUrl: './radio.component.scss'\r\n})\r\nexport class RadioComponent {\r\n name = input<string>()\r\n id = input<string>()\r\n label = input<string>()\r\n value = input<any>()\r\n binding = model<any>()\r\n checked = input<boolean>(false) \r\n changed = output<any>()\r\n disabled = input<boolean>(false)\r\n\r\n handleChange() {\r\n this.changed.emit(this.value())\r\n }\r\n}\r\n","<div class=\"form-check me-2\">\r\n <input class=\"form-check-input\" type=\"radio\" [name]=\"name()\" [id]=\"id()\" [value]=\"value()\" [disabled]=\"disabled()\"\r\n (change)=\"handleChange()\" [(ngModel)]=\"binding\" >\r\n <label class=\"form-check-label cursor-pointer\" [for]=\"id()\">\r\n {{ label() }}\r\n </label>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component,input, model } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CheckBoxComponent } from \"../check-box/check-box.component\";\r\nimport { RadioComponent } from \"../radio/radio.component\";\r\nimport { fadeInOut } from '../../../../directivas/animaciones/fade-animation';\r\n@Component({\r\n selector: 'app-input-radio',\r\n imports: [FormsModule, CommonModule, CheckBoxComponent, RadioComponent],\r\n templateUrl: './input-radio.component.html',\r\n styleUrl: './input-radio.component.scss',\r\n animations: [fadeInOut]\r\n})\r\nexport class InputRadioComponent {\r\n\r\n wlabel = input<number>(0)\r\n label = input<string>('')\r\n isRequired = input<boolean>(false)\r\n type = input<'check' | 'radio'>('check')\r\n name = input<string>('')\r\n position = input<'row' | 'column'>('row')\r\n value = model<any>()\r\n position_row = input<'center' | 'start' | 'end'>('center')\r\n disabled = model<boolean>(false)\r\n\r\n lista = input<any[]>([])\r\n keyCodigo = input<string>('')\r\n keyDescri = input<string>('')\r\n allDisabled = model<boolean>(false)\r\n isVertical = input<boolean>(false)\r\n activeFocus = input<boolean>(true)\r\n customBorderColor = input<string>('')\r\n customBoxShadow = input<string>('')\r\n customTransition = input<string>('')\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","\r\n@if (isVertical()) {\r\n<label for=\"{{'id_' + label()}}\" [style.min-width]=\"wlabel() + 'px'\"> {{label()}} @if (isRequired()) {<span\r\n class=\"fw-bold text-danger\">(*)</span>}</label>\r\n}\r\n<div class=\"d-flex align-items-{{position_row()}}\">\r\n @if (!isVertical()) {\r\n <label for=\"{{'id_' + label()}}\" [style.min-width]=\"wlabel() + 'px'\"> {{label()}} @if (isRequired()) {<span\r\n class=\"fw-bold text-danger\">(*)</span>}</label>\r\n }\r\n <div class=\"flex-grow-1 me-2\">\r\n <div class=\"d-flex flex-{{position()}}\">\r\n @for (item of lista(); track $index) {\r\n @switch (type()) {\r\n @case ('check') {\r\n <app-check-box [name]=\"name()\" [label]=\"item[keyDescri()]\" [value]=\"item[keyCodigo()]\" [id]=\"`check_box_${item[keyCodigo()]}_${item[keyDescri()]}`\" [(binding)]=\"value\" />\r\n }@case ('radio') {\r\n <app-radio [name]=\"name()\" [label]=\"item[keyDescri()]\" [disabled]=\"allDisabled()\" [value]=\"item[keyCodigo()]\" [id]=\"`radio_${item[keyCodigo()]}_${item[keyDescri()]}`\" [(binding)]=\"value\" />\r\n }\r\n }\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import { SelectionModel } from '@angular/cdk/collections';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { Component, computed, effect, ElementRef, input, model, signal, viewChild } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { fadeInOut } from '../../../../directivas/animaciones/fade-animation';\r\n\r\n@Component({\r\n selector: 'app-multiselected',\r\n imports: [OverlayModule,FormsModule],\r\n templateUrl: './multiselected.component.html',\r\n styleUrl: './multiselected.component.scss',\r\n animations:[fadeInOut]\r\n})\r\nexport class MultiselectedComponent {\r\n\r\n selection = new SelectionModel<any>(true, [])\r\n \r\n inputRef = viewChild<ElementRef>('inputRef')\r\n withInput = signal<number>(null)\r\n\r\n lista = input<any[]>([])\r\n type = input<'simple'| 'doble'>('simple')\r\n viewInput = input<'cod' | 'descri'>('descri')\r\n computedKey = computed(() => this.viewInput() == 'cod' ? this.keyCodigo() : this.keyDescri())\r\n computedType = computed(() => this.type() == 'doble')\r\n withTodos = input<boolean>(true)\r\n value = model<any>()\r\n\r\n showDropdown = signal<boolean>(false)\r\n\r\n keyCodigo = input<string>('')\r\n keyDescri = input<string>('')\r\n joinInfo = input<boolean>(false)\r\n wlabel = input<number>(0)\r\n label = input<string>('')\r\n isRequired = input<boolean>(false)\r\n isVertical = input<boolean>(false)\r\n allDisabled = input<boolean>(false)\r\n activeFocus = input<boolean>(true)\r\n customBorderColor = input<string>('')\r\n customBoxShadow = input<string>('')\r\n customTransition = input<string>('')\r\n\r\n selectionChanged = signal(0);\r\n\r\n altoContainer = input<number>(200)\r\n private resizeObserver?: ResizeObserver;\r\n\r\n constructor(){\r\n this.selection.changed.subscribe(() => {\r\n this.selectionChanged.update(n => n + 1);\r\n });\r\n\r\n effect(() => {\r\n this.selectionChanged();\r\n const result = this.selection.selected\r\n .sort((a, b) => a[this.keyCodigo()] - b[this.keyCodigo()])\r\n .map(item => item[this.computedKey()]);\r\n \r\n const format = result.join(',');\r\n this.value.set(format);\r\n });\r\n\r\n effect(() => {\r\n if(!this.value()){\r\n this.selection.clear()\r\n }\r\n })\r\n\r\n\r\n effect(() => {\r\n const el = this.inputRef()?.nativeElement;\r\n if (!el) return;\r\n this.resizeObserver?.disconnect();\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.withInput.set(el.offsetWidth);\r\n });\r\n this.resizeObserver.observe(el);\r\n this.withInput.set(el.offsetWidth);\r\n })\r\n\r\n }\r\n\r\n get allSelected():boolean {\r\n return (!!this.lista().length && this.selection.selected.length === this.lista().length)\r\n }\r\n\r\n toogleAllSelection() {\r\n if(this.allSelected){\r\n this.selection.clear()\r\n return\r\n }\r\n this.selection.select(...this.lista())\r\n }\r\n\r\n get selectedItems () {\r\n return this.value() ?? ''\r\n }\r\n\r\n filterList (text: string) {\r\n const searchTerm = text.trim().toLowerCase()\r\n return this.lista().filter(item => item[this.keyDescri()].toLowerCase().includes(searchTerm))\r\n }\r\n clear() {\r\n this.selection.clear()\r\n }\r\n\r\n\r\n}\r\n","@if (isVertical()) {\r\n<label for=\"{{'id_' + label()}}\" [style.min-width]=\"wlabel() + 'px'\"> {{label()}} @if (isRequired()) {<span\r\n class=\"fw-bold text-danger\">(*)</span>}</label>\r\n}\r\n<div class=\"d-flex align-items-center\">\r\n @if (!isVertical()) {\r\n <label for=\"{{'id_' + label()}}\" [style.min-width]=\"wlabel() + 'px'\">{{label()}} @if (isRequired()) { <span\r\n class=\"fw-bold text-danger\">(*)</span>}</label>\r\n }\r\n <div class=\"multiselect d-flex \">\r\n @if(computedType()){\r\n <div class=\"content-1 me-1\">\r\n <input type=\"text\" class=\"form-control show-input\"\r\n [attr.data-active-focus]=\"activeFocus() == false ? 'false' : ''\"\r\n [style.--focus-border-color]=\"customBorderColor()\" [style.--focus-box-shadow]=\"customBoxShadow()\"\r\n [style.--focus-transition]=\"customTransition()\" [(ngModel)]=\"value\" [disabled]=\"allDisabled()\"\r\n id=\"{{'id_' + label()}}\" name=\"{{'id_' + label()}}\" />\r\n </div>\r\n }\r\n\r\n <div class=\"input-container content-2 me-2\">\r\n <input type=\"text\" [value]=\"selectedItems\" class=\"form-control pe-4\" cdkOverlayOrigin readonly\r\n #autocomplete=\"cdkOverlayOrigin\" #inputRef [attr.data-active-focus]=\"activeFocus() == false ? 'false' : ''\"\r\n [style.--focus-border-color]=\"customBorderColor()\" [style.--focus-box-shadow]=\"customBoxShadow()\"\r\n [style.--focus-transition]=\"customTransition()\" (input)=\"null\"\r\n (focus)=\"showDropdown.set(true);\" [disabled]=\"allDisabled()\" />\r\n @if (selectedItems.length > 0) {\r\n <button @fadeInOut type=\"button\" class=\"btn-clear text-dark\" (click)=\"clear(); inputRef.focus()\">\r\n ×\r\n </button>\r\n }\r\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"autocomplete\"\r\n [cdkConnectedOverlayOpen]=\"showDropdown()\" [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n [cdkConnectedOverlayWidth]=\"withInput()\" (backdropClick)=\"showDropdown.set(false)\"\r\n cdkConnectedOverlayPanelClass=\"autocomplete-overlay\" cdkConnectedOverlayBackdropClass=\"transparent-backdrop\">\r\n\r\n <ul [style.maxHeight.px]=\"altoContainer()\">\r\n @for (item of lista(); track $index) {\r\n <li>\r\n <label class=\"checkbox-animated\">\r\n <input type=\"checkbox\" [id]=\"item[keyCodigo()]\" [checked]=\"selection.isSelected(item)\" (change)=\"selection.toggle(item)\">\r\n <span class=\"text-dark\">{{item[keyDescri()]}}</span>\r\n </label>\r\n </li>\r\n }\r\n <li>\r\n <label class=\"checkbox-animated\">\r\n <input type=\"checkbox\" [id]=\"-1\" [checked]=\"allSelected\" (change)=\"toogleAllSelection()\">\r\n <span class=\"text-dark\">Todos</span>\r\n </label>\r\n </li>\r\n </ul>\r\n </ng-template>\r\n </div>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, effect, input, model } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-switch',\r\n imports: [CommonModule],\r\n templateUrl: './switch.component.html',\r\n styleUrl: './switch.component.scss'\r\n})\r\nexport class SwitchComponent {\r\n\r\n valueOn = input.required<any>()\r\n valueOff = input.required<any>()\r\n\r\n labelOn = input<string>('Activo')\r\n labelOff = input<string>('Inactivo')\r\n\r\n iconOn = input<string>('fas fa-check')\r\n iconOff = input<string>('fas fa-times')\r\n\r\n colorOn = input<string>('bg-success')\r\n colorOff = input<string>('bg-danger')\r\n\r\n model = model<any>()\r\n\r\n _checked = false\r\n\r\n constructor() {\r\n effect(() => {\r\n this._checked = this.model() === this.valueOn()\r\n });\r\n }\r\n\r\n toggle(event: Event) {\r\n const checkbox = event.target as HTMLInputElement\r\n this.model.set(checkbox.checked ? this.valueOn() : this.valueOff())\r\n }\r\n\r\n currentLabel() {\r\n return this._checked ? this.labelOn() : this.labelOff()\r\n }\r\n\r\n currentColor() {\r\n return this._checked ? this.colorOn() : this.colorOff()\r\n }\r\n\r\n currentIcon() {\r\n return this._checked ? this.iconOn() : this.iconOff()\r\n }\r\n}","<div class=\"form-check form-switch d-flex align-items-center\">\r\n <input class=\"form-check-input\" type=\"checkbox\" role=\"switch\" [checked]=\"_checked\" [ngClass]=\"currentColor()\"\r\n (change)=\"toggle($event)\" id=\"switchControl\">\r\n\r\n <span class=\"switch-circle\">\r\n <i [class]=\"currentIcon()\"></i>\r\n </span>\r\n\r\n <label class=\"label-toggle ms-2\" for=\"switchControl\">\r\n {{ currentLabel() }}\r\n </label>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, input, model } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CheckBoxComponent } from '../../inputs/check-box/check-box.component';\r\nimport { RadioComponent } from '../../inputs/radio/radio.component';\r\nimport { fadeInOut } from '../../../../directivas/animaciones/fade-animation';\r\n@Component({\r\n selector: 'app-list-option',\r\n imports: [FormsModule, CommonModule, CheckBoxComponent, RadioComponent],\r\n templateUrl: './list-option.component.html',\r\n styleUrl: './list-option.component.scss',\r\n animations: [fadeInOut]\r\n})\r\n\r\nexport class ListOptionComponent {\r\n wlabel = input<number>(0)\r\n label = input<string>('')\r\n isRequired = input<boolean>(false)\r\n type = input<'check' | 'radio'>('check')\r\n name = input<string>('')\r\n position = input<'row' | 'column'>('row')\r\n value = model<any>()\r\n position_row = input<'center' | 'start' | 'end'>('center')\r\n disabled = model<boolean>(false)\r\n\r\n lista = input<any[]>([])\r\n keyCodigo = input<string>('')\r\n keyDescri = input<string>('')\r\n allDisabled = model<boolean>(false)\r\n isVertical = input<boolean>(false)\r\n activeFocus = input<boolean>(true)\r\n customBorderColor = input<string>('')\r\n customBoxShadow = input<string>('')\r\n customTransition = input<string>('')\r\n}","\r\n@if (isVertical()) {\r\n<label for=\"{{'id_' + label()}}\" [style.min-width]=\"wlabel() + 'px'\"> {{label()}} @if (isRequired()) {<span\r\n class=\"fw-bold text-danger\">(*)</span>}</label>\r\n}\r\n<div class=\"d-flex align-items-{{position_row()}}\">\r\n @if (!isVertical()) {\r\n <label for=\"{{'id_' + label()}}\" [style.min-width]=\"wlabel() + 'px'\"> {{label()}} @if (isRequired()) {<span\r\n class=\"fw-bold text-danger\">(*)</span>}</label>\r\n }\r\n <div class=\"flex-grow-1 me-2\">\r\n <div class=\"d-flex flex-{{position()}}\">\r\n @for (item of lista(); track $index) {\r\n @switch (type()) {\r\n @case ('check') {\r\n <app-check-box [name]=\"name()\" [label]=\"item[keyDescri()]\" [value]=\"item[keyCodigo()]\" [id]=\"`check_box_${item[keyCodigo()]}_${item[keyDescri()]}`\" [(binding)]=\"value\" />\r\n }@case ('radio') {\r\n <app-radio [name]=\"name()\" [label]=\"item[keyDescri()]\" [disabled]=\"allDisabled()\" [value]=\"item[keyCodigo()]\" [id]=\"`radio_${item[keyCodigo()]}_${item[keyDescri()]}`\" [(binding)]=\"value\" />\r\n }\r\n }\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, effect, inject, input, model, signal, untracked } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CheckBoxComponent } from '../../inputs/check-box/check-box.component';\r\nimport { NgClass } from '@angular/common';\r\nimport { ToastService } from '../../../../service/toast.service';\r\nimport { validateSelection, ValidationConfig } from '../../../../directivas/utils/general/validaciones';\r\n\r\ninterface AllSituaciones {\r\n id?: number | string,\r\n nombre?: string,\r\n selected?: boolean\r\n}\r\n\r\n@Component({\r\n selector: 'app-list-situaciones',\r\n imports: [FormsModule, CheckBoxComponent, NgClass],\r\n templateUrl: './list-situaciones.component.html',\r\n styleUrl: './list-situaciones.component.scss'\r\n})\r\n\r\nexport class ListSituacionesComponent {\r\n\r\n private toast = inject(ToastService)\r\n // private estadoInputsService = inject(EstadoInputsService)\r\n\r\n data = input<any[]>()\r\n label = input<string>('Filtrar por situación')\r\n alert = input<string>('situaciones')\r\n\r\n keyid = input<string>('situac')\r\n keydesc = input<string>('situacDesc')\r\n indexSelected = input<number[]>([])\r\n\r\n allData = signal<AllSituaciones[]>([])\r\n dataselected = model<string>('')\r\n\r\n isVertical = input<boolean>(true)\r\n positionRow = input<'row' | 'column'>('column')\r\n wlabel = input<number>(0)\r\n classRow = input<string>('col-auto')\r\n\r\n isModal = input<boolean>(false)\r\n\r\n constructor() {\r\n let hasRun = false\r\n effect(() => {\r\n if (hasRun) return\r\n\r\n const keyid = untracked(() => this.keyid())\r\n const keydesc = untracked(() => this.keydesc())\r\n const indexSelect = untracked(() => this.indexSelected())\r\n\r\n if ((this.data() ?? []).length > 0 && !hasRun) {\r\n let dataReturn = (this.data() ?? []).map((element, index) => {\r\n const newReg: AllSituaciones = {\r\n id: element[keyid] ?? '',\r\n nombre: element[keydesc] ?? '',\r\n selected: indexSelect.length == 0 ? true : indexSelect.includes(index)\r\n }\r\n return newReg\r\n })\r\n const verificar = dataReturn.every(item => item.selected)\r\n dataReturn = [...dataReturn, { id: 'todos', nombre: 'Todos', selected: verificar }]\r\n this.allData.set(dataReturn)\r\n this.concatenar()\r\n hasRun = true\r\n }\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n const context = this.isModal() ? 'M' : undefined\r\n // this.estadoInputsService.registerSituaciones(() => this.validate(), context)\r\n }\r\n\r\n validate(): boolean {\r\n const validations: ValidationConfig[] = this.buildValidations()\r\n const isValid = validations.length == 0 || validateSelection(this.toast, validations)\r\n return isValid\r\n }\r\n\r\n onCheckboxChange(checked: boolean, index: number) {\r\n if (this.allData()[index].id == 'todos') {\r\n this.allData.update(data => data.map(item => ({ ...item, selected: checked })))\r\n } else {\r\n this.allData.update(data => {\r\n const newData = [...data]\r\n newData[index].selected = checked\r\n return newData\r\n })\r\n const allSelected = this.allData()\r\n .filter(item => item.id != 'todos')\r\n .every(item => item.selected)\r\n\r\n this.allData.update(data => {\r\n const newData = [...data]\r\n const todosIndex = newData.findIndex(item => item.id == 'todos')\r\n if (todosIndex != -1) {\r\n newData[todosIndex].selected = allSelected\r\n }\r\n return newData\r\n })\r\n }\r\n this.concatenar()\r\n }\r\n\r\n private buildValidations(): ValidationConfig[] {\r\n const validations: ValidationConfig[] = []\r\n\r\n validations.push({\r\n value: this.dataselected(),\r\n validationType: 'required' as const,\r\n requiredMessage: `Debe seleccionar una o más ${this.alert()}.`\r\n })\r\n\r\n return validations\r\n }\r\n\r\n concatenar() {\r\n const extraer = this.allData().filter(da => da.selected && da.id != 'todos').map(data => data.id)\r\n this.dataselected.set(extraer ? extraer.join(',') : '')\r\n }\r\n}","<div class=\"row mt-2\">\r\n @if (isVertical()) {\r\n <label class=\"d-block mb-1\" [style.min-width]=\"wlabel() + 'px'\">{{label()}}</label>\r\n }\r\n <div class=\"col-12\">\r\n <div [ngClass]=\"!isVertical() ? 'd-flex flex-{{positionRow()}}' : 'd-flex'\">\r\n @if (!isVertical()) {\r\n <label class=\"d-block mb-1\" [style.min-width]=\"wlabel() + 'px'\">{{label()}}</label>\r\n }\r\n <div class=\"row\">\r\n @if (positionRow() == 'row') {\r\n @for (si of allData(); track $index) {\r\n <div class=\"{{classRow()}}\">\r\n <app-check-box [name]=\"'situacion-' + $index\" [id]=\"'situacion-' + $index\" [label]=\"si.nombre\" [value]=\"si.id\"\r\n [(binding)]=\"si.selected\" (bindingChange)=\"onCheckboxChange($event, $index)\" />\r\n </div>\r\n }\r\n }@else {\r\n @for (si of allData(); track $index) {\r\n <app-check-box [name]=\"'situacion-' + $index\" [id]=\"'situacion-' + $index\" [label]=\"si.nombre\" [value]=\"si.id\"\r\n [(binding)]=\"si.selected\" (bindingChange)=\"onCheckboxChange($event, $index)\" />\r\n }\r\n }\r\n \r\n </div>\r\n \r\n </div> \r\n </div>\r\n</div>","import { Component, input, model, computed } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'app-multi-select-dropdown',\r\n imports: [CommonModule, FormsModule, NgbDropdownModule],\r\n templateUrl: './multi-select-dropdown.component.html',\r\n styleUrl: './multi-select-dropdown.component.scss'\r\n})\r\nexport class MultiSelectDropdownComponent {\r\n\r\n label = input<string>('')\r\n wlabel = input<number>(120)\r\n isRequired = input<boolean>(false)\r\n isVertical = input<boolean>(false)\r\n\r\n opciones = input<any[]>([]);\r\n placeholder = input<string>('Seleccionar opciones')\r\n key = input<string>()\r\n descri = input<string>()\r\n\r\n seleccion = model<string>('')\r\n\r\n viewInput = input<'cod' | 'descri'>('descri')\r\n\r\n selecciones = computed(() => {\r\n const val = this.seleccion() || null\r\n return val ? val.split(',') : []\r\n })\r\n\r\n ngAfterViewInit() {\r\n if (!this.selecciones().length) {\r\n queueMicrotask(() => {\r\n const todosLosIds = (this.opciones() || []).map(op => this.obtenerValorKey(op))\r\n this.seleccion.set(todosLosIds.join(','))\r\n })\r\n }\r\n }\r\n\r\n textoBoton = computed(() => {\r\n const seleccionesOrd = this.seleccionesOrdenadas()\r\n if (!seleccionesOrd.length) return this.placeholder()\r\n return (this.opciones() || [])\r\n .filter(op => seleccionesOrd.includes(this.obtenerValorKey(op)))\r\n .map(op => this.obtenerValorDescriMostrar(op))\r\n .join(', ')\r\n })\r\n\r\n seleccionesOrdenadas = computed(() => {\r\n const seleccionActual = this.selecciones()\r\n const opcionesLista = this.opciones() || []\r\n return opcionesLista\r\n .map(op => this.obtenerValorKey(op))\r\n .filter(id => seleccionActual.includes(id))\r\n })\r\n\r\n obtenerValorKey(opcion: any): any {\r\n return opcion[this.key()]\r\n }\r\n\r\n obtenerValorDescriMostrar(opcion: any): string {\r\n const mostrar = this.viewInput() == 'descri' ? this.descri() : this.key()\r\n return opcion[mostrar]\r\n }\r\n\r\n obtenerValorDescri(opcion: any): string {\r\n return opcion[this.descri()]\r\n }\r\n\r\n estaSeleccionado(opcion: any): boolean {\r\n const id = this.obtenerValorKey(opcion)\r\n return this.selecciones().includes(id)\r\n }\r\n\r\n toggleSeleccion(opcion: any) {\r\n const id = this.obtenerValorKey(opcion)\r\n let seleccionActual = this.selecciones()\r\n seleccionActual = seleccionActual.includes(id)\r\n ? seleccionActual.filter(item => item != id)\r\n : [...seleccionActual, id]\r\n this.seleccion.set(seleccionActual.join(','))\r\n }\r\n\r\n toggleTodos() {\r\n const todasLasIds = this.opciones().map(op => this.obtenerValorKey(op))\r\n const nuevasSelecciones = this.estaSeleccionadoTodos() ? [] : todasLasIds\r\n this.seleccion.set(nuevasSelecciones.join(','))\r\n }\r\n\r\n estaSeleccionadoTodos(): boolean {\r\n const todasLasIds = this.opciones().map(op => this.obtenerValorKey(op))\r\n return todasLasIds.every(id => this.selecciones().includes(id))\r\n }\r\n}\r\n","<div class=\"multi-select-wrapper d-flex\">\r\n @if (!isVertical()) {\r\n <label [style.min-width]=\"wlabel() + 'px'\" class=\"form-label mb-0\">\r\n {{ label() }}\r\n @if (isRequired()) {\r\n <span class=\"fw-bold text-danger\">(*)</span>\r\n }\r\n </label>\r\n }\r\n\r\n <div class=\"w-100 me-2\">\r\n <div class=\"dropdown w-100\" ngbDropdown [autoClose]=\"'outside'\">\r\n <button class=\"dropdown-toggle form-static w-100 text-start text-limit\" type=\"button\" ngbDropdownToggle>\r\n {{ textoBoton() }}\r\n </button>\r\n\r\n <div class=\"dropdown-menu b-0 p-0 dropdown-height w-100\" ngbDropdownMenu>\r\n @for (opcion of opciones(); track $index) {\r\n <div class=\"dropdown-item p-0 border-top-radius border-bottom-radius\">\r\n <label class=\"d-block m-0 px-2 pt-1\" [for]=\"'opcion-' + obtenerValorKey(opcion)\">\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [id]=\"'opcion-' + obtenerValorKey(opcion)\"\r\n [checked]=\"estaSeleccionado(opcion)\" (change)=\"toggleSeleccion(opcion)\">\r\n <span class=\"form-check-label\">\r\n {{ obtenerValorDescri(opcion) }}\r\n </span>\r\n </div>\r\n </label>\r\n </div>\r\n }\r\n\r\n <div class=\"dropdown-item p-0 border-top-radius border-bottom-radius\">\r\n <label class=\"d-block m-0 px-2 pt-1\">\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"checkbox\" id=\"opcion-todos\"\r\n [checked]=\"estaSeleccionadoTodos()\" (change)=\"toggleTodos()\">\r\n <span class=\"form-check-label\">\r\n Todos\r\n </span>\r\n </div>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, effect, inject, input, signal } from '@angular/core';\r\nimport { ActivatedRoute, NavigationEnd, Router, RouterLink, RouterLinkActive, RouterOutlet } from '@angular/router';\r\nimport { filter, fromEvent, map, startWith, throttleTime } from 'rxjs';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-sidebar',\r\n imports: [NgClass, RouterLink, RouterOutlet, RouterLinkActive],\r\n templateUrl: './sidebar.component.html',\r\n styleUrl: './sidebar.component.scss'\r\n})\r\nexport class SidebarComponent {\r\n\r\n private route = inject(ActivatedRoute)\r\n private router = inject(Router)\r\n\r\n showMenu = signal<boolean>(true)\r\n lista = input<any[]>([])\r\n titleMenu = input<string>('')\r\n expandedWidth = input<string>('320px')\r\n\r\n title = toSignal(\r\n this.router.events.pipe(\r\n filter((e): e is NavigationEnd => e instanceof NavigationEnd),\r\n startWith(null),\r\n map(() => {\r\n let route = this.route\r\n while (route.firstChild) route = route.firstChild\r\n return route.snapshot?.data?.['title'] || ''\r\n })\r\n ),\r\n { initialValue: '' }\r\n )\r\n\r\n constructor() {\r\n if (typeof window != 'undefined') {\r\n fromEvent(window, 'resize')\r\n .pipe(throttleTime(200))\r\n .subscribe(() => {\r\n const isMediumScreen = window.innerWidth <= 1160 && window.innerWidth >= 700\r\n this.showMenu.set(!isMediumScreen)\r\n })\r\n const initialCheck = window.innerWidth <= 1160 && window.innerWidth >= 700\r\n this.showMenu.set(!initialCheck)\r\n }\r\n }\r\n onMiddleClick(event: MouseEvent, ruta: string) {\r\n if (event.button == 1 && ruta) {\r\n event.preventDefault()\r\n window.open(ruta, '_blank')\r\n }\r\n }\r\n\r\n onRightClick(event: MouseEvent, ruta: string) {\r\n if (ruta) {\r\n event.preventDefault()\r\n window.open(ruta, '_blank')\r\n }\r\n }\r\n}\r\n","<div class=\"responsive-container mtp-12\">\r\n <div class=\"flex-custom\" [ngClass]=\"{'expanded-menu': showMenu(), 'collapsed-menu': !showMenu()}\"\r\n [style.--expanded-width]=\"expandedWidth()\">\r\n <div class=\"bg-white shadow-sm rounded-1 px-3 py-2 d-flex flex-column align-items-start\">\r\n <div class=\"d-flex align-items-center py-3 w-auto cursor-pointer\" (click)=\"showMenu.set(!showMenu())\">\r\n <i class=\"fas fa-bars fs-8 px-1 py-1 icon-bar mrp-3 rounded-1 text-dark\">\r\n </i>\r\n @if(showMenu()){\r\n <p class=\"fs-7 fw-6 mb-0 ms-1\">{{titleMenu()}}</p>\r\n }\r\n </div>\r\n\r\n <ul class=\"list-unstyled w-100\">\r\n @for (item of lista(); track $index) {\r\n <li class=\"item-list fs-7 fw-light py-1 px-1\" [routerLink]=\"item.ruta\" [routerLinkActive]=\"'active'\"\r\n (mousedown)=\"onMiddleClick($event, item.ruta)\" (contextmenu)=\"onRightClick($event, item.ruta)\" title=\"{{item.nombre}}\" >\r\n <i class=\"fas fa-folder fs-7 me-2 icon-list\"></i>\r\n @if(showMenu()){\r\n <span>{{ item.nombre }}</span>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex-grow-1\">\r\n <div class=\"bg-white shadow-sm rounded-1 px-3 py-2\">\r\n <p class=\"fs-7 fw-bold pt-2 w-100\">{{title()}}</p>\r\n <router-outlet></router-outlet>\r\n </div>\r\n </div>\r\n</div>","import { Component, input, output } from '@angular/core';\r\nimport { DecimalPipe, NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-detalle-credito',\r\n imports: [NgClass,DecimalPipe],\r\n templateUrl: './detalle-credito.component.html',\r\n styleUrl: './detalle-credito.component.scss'\r\n})\r\nexport class DetalleCreditoComponent {\r\n data = input<any>({})\r\n utilizado = output<void>()\r\n}\r\n","@let simbolo = data().simbolo || 'S/.';\r\n\r\n<div class=\"d-flex item-credito mt-2\">\r\n <div class=\"title-credito text-dark\">Crédito:</div>\r\n <div class=\"subtitle fw-bold\" [ngClass]=\"data().credito ? 'text-success' : 'text-danger'\">{{data().credito ? 'Abierto' : 'Cerrado'}}</div>\r\n</div>\r\n<div class=\"d-flex item-credito\">\r\n <div class=\"title-credito\">Línea:</div>\r\n <div class=\"subtitle\">{{simbolo}} {{data().limitecredito ?? 0 | number:'1.2-2'}}</div>\r\n</div>\r\n\r\n<div class=\"d-flex item-credito\">\r\n <div class=\"title-credito\">Utilizado:</div>\r\n <div class=\"subtitle\" (click)=\"data().saldo ? utilizado.emit() : null\" [ngClass]=\"data().saldo ? 'cursor-pointer underline' : ''\">{{simbolo}} {{ data().saldo ?? 0 | number:'1.2-2' }}</div>\r\n</div>\r\n\r\n<div class=\"d-flex item-credito\">\r\n <div class=\"title-credito\">Por vencer:</div>\r\n <div class=\"subtitle\">{{simbolo}} {{ data().pendiente ?? 0 | number:'1.2-2' }}</div>\r\n</div>\r\n\r\n<div class=\"d-flex item-credito\">\r\n <div class=\"title-credito\">Vencido:</div>\r\n <div class=\"subtitle\">{{simbolo}} {{ data().vencido ?? 0 | number:'1.2-2' }}</div>\r\n</div>\r\n\r\n<div class=\"d-flex item-credito\">\r\n <div class=\"title-credito\">Disponible:</div>\r\n <div class=\"subtitle\">{{simbolo}} {{ data().disponible ?? 0 | number:'1.2-2' }}</div>\r\n</div>\r\n\r\n<div class=\"d-flex item-credito\">\r\n <div class=\"title-credito\">Puntos:</div>\r\n <div class=\"subtitle\">{{ data().puntaje ?? 0 }}</div>\r\n</div>\r\n","import { Component, input, model } from '@angular/core';\r\nimport { DecimalPipe } from '@angular/common';\r\nimport { cleanNumber } from '../../../directivas/utils/general/funciones';\r\n\r\n@Component({\r\n selector: 'app-montos-calcular',\r\n imports: [DecimalPipe],\r\n templateUrl: './montos-calcular.component.html',\r\n styleUrl: './montos-calcular.component.scss'\r\n})\r\nexport class MontosCalcularComponent {\r\n\r\n data = input<any[]>([])\r\n sizeFont = input<number>()\r\n simbolo = model<string>('S/.')\r\n cleanNumber = cleanNumber\r\n}\r\n","<div class=\"container mt-2\">\r\n <div class=\"table-responsive-custom\">\r\n <table class=\"table total-table bg-dark\">\r\n <tbody>\r\n @for (item of data(); track $index) {\r\n <tr [style.font-size.px]=\"sizeFont() ?? null\">\r\n <td>{{item.title}}</td>\r\n <td>{{item.simbolo ?? simbolo()}}</td>\r\n <td>{{cleanNumber(item.value) | number:'1.2-2'}}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n</div>","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-spinner',\r\n imports: [],\r\n templateUrl: './spinner.component.html',\r\n styleUrl: './spinner.component.scss'\r\n})\r\nexport class SpinnerComponent {\r\n\r\n}\r\n","<div id=\"custom-spinner\" class=\"spinner-overlay\" hidden>\r\n <div class=\"spinner-container\">\r\n <div class=\"spinner-border-wrapper\">\r\n <div class=\"spinner-border\"></div>\r\n </div>\r\n <img src=\"../assets/images/logo-tsi-tres.png\" class=\"spinner-img\" />\r\n </div>\r\n</div>","import { Component, input, TemplateRef } from '@angular/core';\r\nimport { BadgeComponent } from \"../../alerts/badge/badge.component\";\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { TableData } from '../../../models/table-data.model';\r\nimport { CellRender, CellRendered } from '../../../models/cell-rendered';\r\nimport { validaArray } from '../../../directivas/utils/general/validaciones';\r\n\r\n@Component({\r\n selector: 'app-card-mobile',\r\n imports: [BadgeComponent, NgTemplateOutlet,ScrollingModule],\r\n templateUrl: './card-mobile.component.html',\r\n styleUrl: './card-mobile.component.scss'\r\n})\r\nexport class CardMobileComponent {\r\n data = input<any[]>([])\r\n columns = input<TableData[]>([])\r\n identifier = input<string[]>([])\r\n titleTabla = input<string>('Contrato')\r\n actions = input<TemplateRef<any>>(null)\r\n altoContainer = input<number>()\r\n\r\n rendered = input<CellRendered[]>([])\r\n\r\n getIdentifier (row:any) {\r\n if(!validaArray(this.identifier())) return ''\r\n const join = this.identifier().map(k => row[k]).join(' ')\r\n return `N° ${join}`;\r\n }\r\n\r\n resolveCell(col: string, row: any): CellRender | null {\r\n const value = row[col]\r\n const r = this.rendered().find(r => r.matches(col, value, row))\r\n return r ? r.render(value, row) : null\r\n }\r\n}\r\n","<cdk-virtual-scroll-viewport itemSize=\"120\" [style.height]=\"altoContainer() ? 'calc(100vh - ' + altoContainer() + 'px)' : ''\" >\r\n <div class=\"row g-2 py-2\">\r\n <!-- @for (item of data(); track $index) { -->\r\n <div *cdkVirtualFor=\"let item of data(); let i = index\" class=\"col-12\">\r\n <div class=\"card shadow-sm\">\r\n <span class=\"pt-2 px-3 fw-bold fs-7\">{{titleTabla() ?? ''}} {{getIdentifier(item)}}</span>\r\n <div class=\"card-body py-1 my-0\">\r\n @for (col of columns(); track $index) {\r\n @if (col.swmobile) {\r\n <div class=\"d-flex py-1\">\r\n <strong class=\"fs-6 me-2 flex-shrink-0\" style=\"min-width: 90px;\">\r\n {{ col.caption }}\r\n </strong>\r\n \r\n <span class=\"fs-6 fw-normal text-break text-wrap flex-grow-1\">\r\n {{ item._format?.[col.fieldname] ?? item[col.fieldname] }}\r\n </span>\r\n \r\n </div>\r\n }\r\n \r\n }\r\n </div>\r\n @if (actions()) {\r\n <div class=\"pb-2 px-3 d-flex justify-content-between align-items-center\">\r\n <app-badge label=\"Acciones:\" color=\"bg-success\"></app-badge>\r\n <div>\r\n <ng-container *ngTemplateOutlet=\"actions(); context: { $implicit: item }\"></ng-container>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <!-- } -->\r\n </div>\r\n</cdk-virtual-scroll-viewport>","import { Directive, ElementRef, inject, input, OnInit, Renderer2 } from '@angular/core';\r\nimport { ICON_CLASSES } from './button.constants';\r\n\r\n@Directive({\r\n selector: '[iconName]',\r\n standalone: true\r\n})\r\nexport class IconsDirective implements OnInit {\r\n name = input<keyof typeof ICON_CLASSES | string>('agregar', { alias: 'iconName' })\r\n\r\n private elementRef = inject(ElementRef)\r\n private renderer = inject(Renderer2)\r\n\r\n ngOnInit(): void {\r\n this.aplicarEstilo()\r\n }\r\n\r\n aplicarEstilo() {\r\n this.renderer.addClass(this.elementRef.nativeElement, 'fa')\r\n\r\n const iconClass = ICON_CLASSES[this.name()]\r\n if (iconClass) {\r\n this.renderer.addClass(this.elementRef.nativeElement, iconClass)\r\n }\r\n }\r\n}","import { Directive, ElementRef, inject, input, OnInit, Renderer2 } from '@angular/core';\r\nimport { COLOR_CLASSES } from './button.constants';\r\n\r\n@Directive({\r\n selector: '[colorBtn]',\r\n standalone: true\r\n})\r\nexport class ButtonsModalDirective implements OnInit {\r\n color = input<'azul' | 'rojo' | 'verde' | 'negro' | 'amarillo' | 'gris' | 'plomo' | 'none' | string>('azul', { alias: 'colorBtn' })\r\n\r\n private el = inject(ElementRef)\r\n private renderer = inject(Renderer2)\r\n\r\n ngOnInit(): void {\r\n this.aplicarEstilos()\r\n }\r\n\r\n aplicarEstilos() {\r\n const baseClasses = ['btn', 'btn-sm', 'py-2', 'px-4', 'btn-rounded', 'me-1']\r\n baseClasses.forEach(cls => this.renderer.addClass(this.el.nativeElement, cls))\r\n\r\n if (this.color() === 'none') {\r\n this.renderer.removeClass(this.el.nativeElement, 'py-2')\r\n this.renderer.removeClass(this.el.nativeElement, 'px-4')\r\n this.renderer.addClass(this.el.nativeElement, 'bg-none')\r\n this.renderer.addClass(this.el.nativeElement, 'border-0')\r\n this.renderer.addClass(this.el.nativeElement, 'fs-6')\r\n this.renderer.addClass(this.el.nativeElement, 'fw-7')\r\n } else {\r\n const colorClass = COLOR_CLASSES[this.color()]\r\n if (colorClass) {\r\n this.renderer.addClass(this.el.nativeElement, colorClass)\r\n }\r\n }\r\n }\r\n}","import { Directive, ElementRef, inject, input, OnInit, Renderer2 } from '@angular/core';\r\nimport { OUTLINE_COLOR_CLASSES } from './button.constants';\r\n\r\n@Directive({\r\n selector: '[colorOutlineBtn]',\r\n standalone: true\r\n})\r\nexport class ButtonsOutlineDirective implements OnInit {\r\n color = input<'azul' | 'rojo' | 'verde' | 'negro' | 'amarillo' | 'gris' | 'plomo' | string>('azul', { alias: 'colorOutlineBtn' })\r\n\r\n private el = inject(ElementRef)\r\n private renderer = inject(Renderer2)\r\n\r\n ngOnInit(): void {\r\n this.aplicarEstilos()\r\n }\r\n\r\n aplicarEstilos() {\r\n const baseClasses = ['btn', 'btn-rounded', 'me-1', 'fs-8', 'px-3']\r\n baseClasses.forEach(cls => this.renderer.addClass(this.el.nativeElement, cls))\r\n\r\n const colorClass = OUTLINE_COLOR_CLASSES[this.color()]\r\n if (colorClass) {\r\n this.renderer.addClass(this.el.nativeElement, colorClass)\r\n }\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StorageService {\r\n\r\n public static USER_KEY: string = \"sessionERP\";\r\n public static COD_SUC_KEY: string = \"codsuc\"\r\n public static FILTRO:string = 'filtro_consulta'\r\n public static GRILLAS_KEY:string = 'v_recursosGlosa'\r\n public static TEMA_APP: string = 'themeApp'\r\n \r\n setData(key: string, value: any) {\r\n localStorage.setItem(key, value);\r\n }\r\n\r\n public getData(key: string) {\r\n return localStorage.getItem(key);\r\n }\r\n\r\n public static setAll(value: any) {\r\n localStorage.setItem(this.USER_KEY, JSON.stringify(value));\r\n }\r\n\r\n public static getSession() {\r\n return JSON.parse(localStorage.getItem(this.USER_KEY));\r\n }\r\n\r\n public static obtenerAcceso(accesos: any, codmod: number, codacc: number): any {\r\n let vResponse: any = null;\r\n if (accesos != null)\r\n accesos.forEach((element: any) => {\r\n if (element.codmod == codmod && element.codacc == codacc) {\r\n vResponse = element;\r\n }\r\n });\r\n return vResponse\r\n }\r\n\r\n //AGREGAR CODSUC AL STORAGE\r\n public static setCodSuc(value:number){\r\n localStorage.setItem(this.COD_SUC_KEY,value.toString())\r\n }\r\n \r\n public static getCodSuc():number{\r\n return Number(localStorage.getItem(this.COD_SUC_KEY))\r\n }\r\n\r\n //AGREGAR GRILLAS AL STORAGE\r\n public static setGrilla(value:any){\r\n localStorage.setItem(this.GRILLAS_KEY,JSON.stringify(value))\r\n }\r\n\r\n public static getGrilla(){\r\n const data = JSON.parse(localStorage.getItem(this.GRILLAS_KEY))\r\n return data ?? []\r\n }\r\n\r\n //FILTROS CONSULTA\r\n\r\n public static setFiltro(value:any){\r\n localStorage.setItem(this.FILTRO,JSON.stringify(value))\r\n }\r\n \r\n public static getFiltro():any{\r\n return JSON.parse(localStorage.getItem(this.FILTRO))\r\n }\r\n\r\n public static deleteFiltro(){\r\n localStorage.removeItem(this.FILTRO);\r\n }\r\n\r\n // TEMA DARK MODE\r\n public static setTema(value:'dark' | 'light'){\r\n localStorage.setItem(this.TEMA_APP,value)\r\n }\r\n\r\n public static getTema(){\r\n const tema = localStorage.getItem(this.TEMA_APP)\r\n return tema ?? 'light'\r\n }\r\n\r\n removeData(key: string) {\r\n localStorage.removeItem(key);\r\n }\r\n\r\n public static clearStorage() {\r\n\r\n const keys = Object.keys(localStorage)\r\n let count = keys.length;\r\n\r\n while (count--) {\r\n keys[count] == 'rucUser' ? null : localStorage.removeItem(keys[count])\r\n }\r\n }\r\n\r\n}\r\n","export const FACTORES = {\r\n\r\n valorDeIGVEnVenta: {\r\n descri: '1 - I.G.V VENTA',\r\n key: 'igvVenta'\r\n },\r\n\r\n /*-*/valorDeIGVEnCompra: {\r\n descri: '11 - I.G.V. COMPRA',\r\n key: 'igvCompra'\r\n },\r\n\r\n /*-*/longitudDeCodigoDeArticulo: {\r\n descri: '20 - LONGITUD DE CÓDIGO ARTÍCULO / DECIMAL',\r\n key: 'longitudCodigoArticulo'\r\n },\r\n\r\n /*-*/longitudDeCodigoDeCliente: {\r\n descri: '21 - LONGITUD DE CÓDIGO CLIENTE / CADENA',\r\n key: 'longitudCodigoCliente'\r\n },\r\n\r\n /*-*/codigoCorrelativoDeArticulo: {\r\n descri: '22 - CÓDIGO DE ARTÍCULO CORRELATIVO',\r\n key: 'codigoArticuloAutomatico'\r\n },\r\n\r\n codigoCorrelativoAutomaticoDeCliente: {\r\n descri: '23 - CÓDIGO CORRELATIVO AUTOMÁTICO DE CLIENTES',\r\n key: 'codigoClienteAutomatico'\r\n },\r\n\r\n /*-*/porcentajeDeServicioDePlanchado: {\r\n descri: '35 - SERVICIO DE PLANCHADO LAVANDERIA - CORPORATIVO / DECIMAL',\r\n key: 'servicioPlanchadoPorcentaje'\r\n },\r\n\r\n definirTipoDeHerencia: {\r\n descri: '216 - PROCESO DE FACTURACIÓN / ENTERO',\r\n key: 'procesoFacturacion'\r\n },\r\n\r\n numeroDeDecimalesParaCantidadEnComercial: {\r\n descri: '219 - DECIMALES PARA COMERCIAL / ENTERO',\r\n key: 'decimalesComercialCantidad'\r\n },\r\n\r\n numeroDeDecimalesParaPrecioEnComercial: {\r\n descri: '219 - DECIMALES PARA COMERCIAL / DECIMAL',\r\n key: 'decimalesComercialPrecio'\r\n },\r\n\r\n numeroDeDecimalesParaCantidadEnLogistica: {\r\n descri: '220 - DECIMALES PARA LOGISTICA / ENTERO',\r\n key: 'decimalesLogisticaCantidad'\r\n },\r\n\r\n numeroDeDecimalesParaPrecioEnLogistica: {\r\n descri: '220 - DECIMALES PARA LOGISTICA / DECIMAL',\r\n key: 'decimalesLogisticaPrecio'\r\n },\r\n\r\n cuentaIGVDeRetencionPorDefecto: {\r\n descri: '224 - VALORES DEFAULT COMPROBANTE DE RETENCIÓN / CUENTA',\r\n key: 'cuentaIGVRetencionDefecto'\r\n },\r\n\r\n cuentaDeRetencionPorDefecto: {\r\n descri: '224 - VALORES DEFAULT COMPROBANTE DE RETENCIÓN / ENTERO',\r\n key: 'cuentaRetencionDefecto'\r\n },\r\n\r\n /*-*/diasDeEntregaDeLavado: {\r\n descri: '301 - DIAS DE ENTREGA DE LAVADO',\r\n key: 'diasEntregaGuiasRecepcion'\r\n },\r\n\r\n cantidadDeDescuentoEnComercial: {\r\n descri: '302 - NRO DE DESCUENTO - COMERCIAL',\r\n key: 'cantidadDescuentosComercial'\r\n },\r\n\r\n /*-*/cantidadDeDescuentoEnLogistica: {\r\n descri: '303 - NRO DE DESCUENTO - LOGÍSTICA',\r\n key: 'cantidadDescuentosLogistica'\r\n },\r\n\r\n tipoDeMonedaDeLimiteDeCredito: {\r\n descri: '311 - MONEDA DE LÍMITE DE CRÉDITO CLIENTES',\r\n key: 'monedaLimiteCreditoClientes'\r\n },\r\n\r\n redondeoAlTotalPorItem: {\r\n descri: '314 - REDONDEO AL TOTAL POR ITEM DEL DOCUMENTO / ENTERO',\r\n key: 'redondeoPorItem'\r\n },\r\n\r\n agenteDeRetencion: {\r\n descri: '331 - ES AGENTE DE RETENCIÓN',\r\n key: 'agenteRetencion'\r\n },\r\n\r\n agenteDePercepcion: {\r\n descri: '332 - ES AGENTE DE PERCEPCIÓN',\r\n key: 'agentePercepcion'\r\n },\r\n\r\n codigoCorrelativoAutomaticoDeProveedor: {\r\n descri: '341 - CÓDIGO CORRELATIVO AUTOMÁTICO DE PROVEEDORES',\r\n key: 'codigoProveedorAutomatico'\r\n },\r\n\r\n /*-*/codigoCorrelativoAutomaticoDeClienteVentaRapida: {\r\n descri: '342 - CÓDIGO CORRELATIVO AUTOMÁTICO DE CLIENTES - VENTA RÁPIDA',\r\n key: 'codigoClienteAutomaticoVentaRapida'\r\n },\r\n\r\n /*-*/agregarCondicionDePagoAlAprobarOrdenDePedido: {\r\n descri: '348 - AGREGAR CONDICIÓN DE PAGO AL APROBAR ORDEN DE PEDIDO',\r\n key: 'agregaCondicionPagoAprobarOrdenPedido'\r\n },\r\n\r\n impresionLuegoDeRegistrar: {\r\n descri: '350 - ENVÍO DIRECTO A IMPRESIÓN',\r\n key: 'impresionDirectaCompVenta'\r\n },\r\n\r\n /*-*/tamanoDeDireccionDeCliente: {\r\n descri: '351 - TAMAÑO DE DIRECCIÓN DE CLIENTE',\r\n key: 'tamanoDireccionCliente'\r\n },\r\n\r\n /*-*/identificarUsuarioEnBoletaSiSuperaTope: {\r\n descri: '354 - IDENTIFICAR A USUARIO EN BOLETA DE VENTA SI SUPERA TOPE MÍNIMO(SUNAT)',\r\n key: 'topeBoletaVentaIdentCliente'\r\n },\r\n\r\n /*-*/montoBancarizableEnSoles: {\r\n descri: '355 - MONTO BANCARIZABLE EN SOLES',\r\n key: 'montoBancarizableSoles'\r\n },\r\n\r\n /*-*/montoBancarizableEnDolares: {\r\n descri: '356 - MONTO BANCARIZABLE EN DÓLARES',\r\n key: 'montoBancarizableDolares'\r\n },\r\n\r\n /*-*/controlDeStockPorDefectoEnMantenimientoDeArticulos: {\r\n descri: '361 - CONTROL STOCK DEFAULT EN MANTENIMIENTO DE ARTÍCULOS',\r\n key: 'tipoControlStockDefecto'\r\n },\r\n\r\n /*-*/codigoCorrelativoDeActivoFijo: {\r\n descri: '366 - CÓDIGO CORRELATIVO DE ACTIVO FIJO',\r\n key: 'codigoCorrelativoActivoFijo'\r\n },\r\n\r\n /*-*/permiteImprimirVariasEtiquetas: {\r\n descri: '370 - PROGRAMA DE AUTORIZACIÓN DE IMPRESION DE ETIQUETAS MÁS DE 1 VEZ',\r\n key: 'permiteImprimirVariasEtiquetas'\r\n },\r\n\r\n /*-*/facturadorElectronico: {\r\n descri: '374 - FACTURADOR ELECTRÓNICO SUNAT',\r\n key: 'facturadorElectronico'\r\n },\r\n\r\n vendedorNoModificableEnComercial: {\r\n descri: '375 - VENDEDOR NO SE MODIFICA EN PROCESO COMERCIAL',\r\n key: 'permiteModificarVendedorComercial'\r\n },\r\n\r\n /*-*/actualizarTituloDeListaDePreciosDeVenta: {\r\n descri: '384 - ACTUALIZAR LISTA DE PRECIOS DE VENTA (S/N) - CÓDIGO DE LISTA (ENTERO) / ENTERO',\r\n key: 'tituloListaActualizaPrecio'\r\n },\r\n\r\n /*-*/actualizarListaDePreciosDeVenta: {\r\n descri: '384 - ACTUALIZAR LISTA DE PRECIOS DE VENTA (S/N) - CÓDIGO DE LISTA (ENTERO)',\r\n key: 'actualizaListaPrecio'\r\n },\r\n\r\n /*-*/margenDeVentaACostoDeEtiquetas: {\r\n descri: '387 - MARGEN DE VENTA A COSTO DE ETIQUETAS / ENTERO',\r\n key: 'facMargenVentaCostoEti'\r\n },\r\n\r\n /*-*/diasAdicionalesParaFechaDeEntregaDeOrdenesDePedido: {\r\n descri: '393 - DÍAS ADICIONALES PARA FECHA DE ENTREGA DE ORDENES DE PEDIDO / ENTERO',\r\n key: 'diaAdicionalFechaEntregaOrdenPedido'\r\n },\r\n\r\n /*-*/aprobacionAutomaticaDeOrdenesDeCompra: {\r\n descri: '394 - APROBACIÓN AUTOMÁTICO DE ORDENES DE COMPRA',\r\n key: 'aprobacionAutomaticoOrdenesCompra'\r\n },\r\n\r\n incluyeFleteYSeguroEnComprobanteDeExportacion: {\r\n descri: '396 - PREDETERMINADO INCLUYE FLETE Y SEGURO EN COMPROBANTE DE EXPORTACIÓN',\r\n key: 'incluyeFleteSeguroEnComprobanteExportacion'\r\n },\r\n\r\n /*-*/listaDePreciosPorDefectoParaPrecisoEnCero: {\r\n descri: '397 - LISTA DE PRECIOS DEFECTO PARA PRECIOS EN CERO / ENTERO',\r\n key: 'tituloListaDefectoVenta'\r\n },\r\n\r\n /*-*/emisionDeGuiasDeRemisionElectronicas: {\r\n descri: '399 - EMISIÓN DE GUÍAS DE REMISIÓN ELECTRÓNICAS',\r\n key: 'guiaRemisionElectronico'\r\n },\r\n\r\n /*-*/controlDeAlmacenDeTransitoDeImportacion: {\r\n descri: '404 - CONTROL DE ALMACÉN DE TRÁNSITO DE IMPORTACIÓN',\r\n key: 'controlTransitoImportacion'\r\n },\r\n\r\n /*-*/usarSegundaListaDePreciosPorUnidadDeMedida: {\r\n descri: '405 - USAR SEGUNDA LISTA DE PRECIOS POR UNIDAD DE MEDIDA',\r\n key: 'facSegundaPrePorUnidades'\r\n },\r\n\r\n /*-*/validaSaldosPorRecibirEnOrdenDeCompra: {\r\n descri: '410 - VALIDA SALDOS POR RECIBIR EN ORDEN DE COMPRA',\r\n key: 'facValidaSaldosPorRecibirOrdCompra'\r\n },\r\n\r\n /*-*/controlDeStockComprometidoPorComprobantesDeVenta: {\r\n descri: '411 - CONTROL DE STOCK COMPROMETIDO POR COMPROBANTES DE VENTA',\r\n key: 'controlStockCompVentaComprometido'\r\n },\r\n\r\n /*-*/restriccionDeUsuarioPorSucursal: {\r\n descri: '413 - RESTRICCIÓN DE USUARIO POR SUCURSAL',\r\n key: 'restriccionUsuarioSucursal'\r\n },\r\n\r\n /*-*/permiteEmisionDeBoletasConRuc: {\r\n descri: '416 - PERMITE LA EMISIÓN DE BOLETAS ELECTRONICAS CON RUC',\r\n key: 'emisionBoletaConRuc'\r\n },\r\n\r\n /*-*/listaDePreciosVisualesEnTSIMobile: {\r\n descri: '427 - LISTA DE PRECIOS VISUALES EN TSIMOBILE PARA VENDEDORES',\r\n key: 'listaPreciosVendedorestm'\r\n },\r\n\r\n permiteModificarItemsDeDocPadreEnComercial: {\r\n descri: '431 - PERMITE MODIFICAR ÍTEMS DE DOCUMENTO PADRE EN PROCESO COMERCIAL(ANGULAR)',\r\n key: 'facPermiteModItmsDocPadreProcesoComercial'\r\n },\r\n\r\n /*-*/calculaDocumentosSinAgregarImpuestoICBPER: {\r\n descri: '432 - CALCULA DOCUMENTOS SIN AGREGAR IMPUESTO ICBPER',\r\n key: 'facCalculatotalSinCBPER'\r\n },\r\n\r\n /*-*/pathBaseDeServiciosRestInterbase: {\r\n descri: '433 - PATH BASE DE SERVICIOS REST INTERBASE',\r\n key: 'facBasePathServiciosTSI'\r\n },\r\n\r\n permiteModificarItemsDeDocPadreEnLogistica: {\r\n descri: '434 - PERMITE MODIFICAR ÍTEMS DE DOCUMENTO PADRE EN PROCESO LOGÍSTICO',\r\n key: 'facPermiteModItmsDocPadreProcesoLogistica'\r\n },\r\n\r\n /*-*/codigoDeArticuloDeServicioDePlanchado: {\r\n descri: '435 - SERVICIO DE PLANCHADO LAVANDERIA - CORPORATIVO / CADENA',\r\n key: 'servicioPlanchadoCodart'\r\n },\r\n\r\n /*-*/tipoDeInventarioDeServicioDePlanchado: {\r\n descri: '435 - SERVICIO DE PLANCHADO LAVANDERIA - CORPORATIVO / ENTERO',\r\n key: 'servicioPlanchadoTipinv'\r\n },\r\n\r\n preguntaPorImpresionAgrupadaEnComercial: {\r\n descri: '437 - PREGUNTA IMPRESIÓN AGRUPADA EN PROCESO COMERCIAL',\r\n key: 'impresionAgrupadaComercial'\r\n },\r\n\r\n fechaDeEntregaEnBlancoEnOrdenDePedido: {\r\n descri: '438 - FECHA DE ENTREGA EN BLANCO EN ORDEN DE PEDIDO',\r\n key: 'fechaEntregaEnBlancoOrdenPedido'\r\n },\r\n\r\n validaCostoYTipoDeCambioDeCotizaciones: {\r\n descri: '442 - VALIDACIÓN DE COSTO Y TIPO DE CAMBIO EN EMISION DE COTIZACIONES',\r\n key: 'validaCostoTipCamCotizaciones'\r\n },\r\n\r\n planillaDeCancelacionRapidaEnMarket: {\r\n descri: '449 - PLANILLA DE CANCELACION RAPIDA EN MARKET',\r\n key: 'planillaCancelacionRapidaMarket'\r\n },\r\n\r\n diasDeExpiracionDeClave: {\r\n descri: '450 - POLITICA DE EXPIRACIÓN DE CONTRASEÑA / ENTERO',\r\n key: 'diasExpiraClave'\r\n },\r\n\r\n tieneFlujoDeCaja: {\r\n descri: '451 - FLUJO DE CAJA',\r\n key: 'flujoDeCaja'\r\n },\r\n\r\n habilitaGlosaExtendida: {\r\n descri: '452 - \tDOCUMENTOS UTILIZAN GLOSA EXTENDIDA',\r\n key: 'utilizarGlosaExtendida'\r\n },\r\n\r\n vendedorNoModificableEnPuntoDeVenta: {\r\n descri: '453 - PERMITE MODIFICAR VENDEDOR EN PROCESO COMERCIAL DE PUNTO DE VENTA',\r\n key: 'permiteModificarVendedorPuntoVenta'\r\n },\r\n\r\n habilitaCalidadYColor: {\r\n descri: '454 - EMPRESA UTILIZA CÓDIGOS ADICIONALES',\r\n key: 'utilizaCodigosAdicionales'\r\n },\r\n\r\n /*-*/validaDuplicidadDeOrdenDeCompra: {\r\n descri: '455 - VALIDA DUPLICIDAD EN ORDEN DE COMPRA RELACIONADA AL COMPROBANTE',\r\n key: 'validaOrdenCompraEnComprobantes'\r\n },\r\n\r\n requiereReferenciaContable: {\r\n descri: '458 - HABILITAR REFERENCIA CONTABLE',\r\n key: 'referenciaContable'\r\n },\r\n\r\n aprobacionDeOperacionesEnCXP: {\r\n descri: '459 - APROBACIÓN EN OPERACIONES DE CUENTAS POR PAGAR',\r\n key: 'aprobarEnOperacionesCxp'\r\n }\r\n\r\n} as const\r\n\r\nexport type FactorKey = typeof FACTORES[keyof typeof FACTORES]['key']\r\nexport type FactorDescripcion = typeof FACTORES[keyof typeof FACTORES]['descri']\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { StorageService } from './storage.service';\r\nimport { getFirstItem } from '../directivas/utils/general/validaciones';\r\nimport { FACTORES } from '../directivas/utils/configuracion-sistema/factores';\r\nimport { TipoAfeccionSesion } from '../models/sesion/tipo-afectacion.model';\r\nimport { AlmacenSesion } from '../models/sesion/almacen-sesion.model';\r\nimport { InventarioSesion } from '../models/sesion/inventario-sesion.model';\r\nimport { UnidadesSesion } from '../models/sesion/unidades-sesion.model';\r\nimport { TituloListas } from '../models/sesion/titulo-listas.model';\r\nimport { DocumentosTipo } from '../models/sesion/documento-tipo-sesion.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class SesionService {\r\n\r\n getSession() {\r\n return StorageService.getSession()\r\n }\r\n\r\n getMonedas() {\r\n return this.getSession() ? (this.getSession().monedas ?? []).filter(mon => mon.codmon !== 'EUR') : []\r\n }\r\n\r\n getVendedores() {\r\n return this.getSession() ? (this.getSession().vendedores ?? []) : []\r\n }\r\n\r\n getMotivos(codigo: number) {\r\n const motivos = this.getSession()?.motivos ?? [];\r\n return motivos.filter((motivo: any) => motivo.tipdoc == codigo)\r\n }\r\n\r\n getSituaciones(codigo: number) {\r\n const situaciones = this.getSession()?.situaciones ?? [];\r\n return situaciones.filter((situacion: any) => situacion.tipdoc == codigo)\r\n }\r\n\r\n getSucursales() {\r\n return this.getSession() ? (this.getSession().sucursales ?? []) : []\r\n }\r\n\r\n getAlmacenDefecto() {\r\n const encontrarDefecto = this.getSucursales().find(suc => suc.codsuc == this.getSucursalSelected())\r\n let codalm = encontrarDefecto ? encontrarDefecto.almacenDefecto : null\r\n\r\n if (codalm) return codalm\r\n const firstAlmacen = getFirstItem(this.getAlmacenes())\r\n codalm = firstAlmacen ? firstAlmacen.codalm : null\r\n return codalm\r\n }\r\n\r\n getDecimalesPrecioComercial(): number {\r\n try {\r\n const factorPrecio = this.getFactorByKey(FACTORES.numeroDeDecimalesParaPrecioEnComercial.key)\r\n const numero = Number(factorPrecio)\r\n return isNaN(numero) ? 2 : numero\r\n } catch {\r\n return 2\r\n }\r\n }\r\n\r\n getlEmisiones() {\r\n return this.getSession() ? (this.getSession().lugarEmisions ?? []) : []\r\n }\r\n\r\n getTipoDocumentos() {\r\n return this.getSession() ? (this.getSession().documentoTipos ?? []) : []\r\n }\r\n\r\n getIdentidades() {\r\n return this.getSession() ? (this.getSession().identidades ?? []) : []\r\n }\r\n\r\n getTAfectacion(): TipoAfeccionSesion[] {\r\n return this.getSession() ? (this.getSession().tipoAfectacionIgvs ?? []) : []\r\n }\r\n\r\n getCodUser() {\r\n return this.getSession() ? this.getSession().coduser : ''\r\n }\r\n\r\n getSucursalSelected() {\r\n return StorageService.getCodSuc()\r\n }\r\n\r\n getIdCia() {\r\n return this.getSession() ? this.getSession().id_cia : ''\r\n }\r\n\r\n getCia() {\r\n return this.getSession() ? this.getSession().cia : ''\r\n }\r\n\r\n getToken() {\r\n return this.getSession() ? this.getSession().token : ''\r\n }\r\n\r\n getRuc() {\r\n return this.getSession() ? this.getSession().ruc : ''\r\n }\r\n\r\n getAccesos() {\r\n return this.getSession() ? this.getSession().accesos : []\r\n }\r\n\r\n getInventarios(): InventarioSesion[] {\r\n return this.getSession() ? (this.getSession().inventarios ?? []) : []\r\n }\r\n\r\n getAlmacenes(): AlmacenSesion[] {\r\n return this.getSession() ? (this.getSession().almacenes ?? []) : []\r\n }\r\n\r\n getUnidadesMedida(): UnidadesSesion[] {\r\n return this.getSession() ? (this.getSession().unidades ?? []) : []\r\n }\r\n\r\n getTituloListas(): TituloListas[] {\r\n return this.getSession() ? (this.getSession().tituloListas ?? []) : []\r\n }\r\n\r\n getDocumentosTipo(filtro?: number[]): DocumentosTipo[] {\r\n const documentos = this.getSession()?.documentoTipos ?? []\r\n if (filtro) {\r\n return documentos.filter(doc => filtro.includes(doc.tipdoc))\r\n }\r\n return documentos\r\n }\r\n\r\n getGrilla(id: string): any[] {\r\n const grillas = StorageService.getGrilla()\r\n const encontrar = grillas.find(item => (item.idform ?? '') == id)\r\n if (encontrar) {\r\n const columns = encontrar.columns ?? []\r\n const orderColumn = columns.sort((a, b) => (a.order ?? 0) - (b.order ?? 0))\r\n return orderColumn\r\n }\r\n return []\r\n }\r\n\r\n getFactores() {\r\n return this.getSession() ? this.getSession().factores : null\r\n }\r\n\r\n getFactorByKey(extraerFactor: string) {\r\n const factores = this.getFactores()\r\n if (factores) return factores[extraerFactor]\r\n }\r\n\r\n getPropiedades() {\r\n return this.getSession() ? this.getSession().propiedades : null\r\n }\r\n \r\n getPropiedadByKey(extraerPropiedad: string) {\r\n const propiedades = this.getPropiedades()\r\n if (propiedades) return propiedades[extraerPropiedad]\r\n }\r\n\r\n getCondicionesPagos() {\r\n return this.getSession() ? (this.getSession().cPagos ?? []) : []\r\n }\r\n}\r\n","import { Component, ViewChildren, QueryList, ElementRef, inject, computed, signal, ViewChild, input } from '@angular/core';\r\nimport { NgbDropdownModule, NgbDropdown } from '@ng-bootstrap/ng-bootstrap';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonComponent } from '../../forms/button/button.component';\r\nimport { IconsDirective } from '../../../directivas/estilos/icons.directive';\r\nimport { ButtonsModalDirective } from '../../../directivas/estilos/buttons-modal.directive';\r\nimport { ButtonsOutlineDirective } from '../../../directivas/estilos/buttons-outline-directive';\r\nimport { SesionService } from '../../../service/sesion.service';\r\nimport { DropdownOption } from '../../../models/dropdownoption.model';\r\nimport { ButtonProperties } from '../../../models/button-properties.model';\r\n\r\n@Component({\r\n selector: 'app-dropdown-menu',\r\n imports: [NgbDropdownModule, CommonModule, ButtonComponent, IconsDirective, ButtonsModalDirective, ButtonsOutlineDirective],\r\n templateUrl: './dropdown-menu.component.html',\r\n styleUrl: './dropdown-menu.component.scss'\r\n})\r\n\r\nexport class DropdownMenuComponent {\r\n\r\n private sesionService = inject(SesionService)\r\n\r\n @ViewChild(NgbDropdown) dropdown!: NgbDropdown\r\n @ViewChildren('submenuAnchor') submenuAnchors!: QueryList<NgbDropdown>\r\n @ViewChildren('submenuDiv') submenuDivs!: QueryList<ElementRef>\r\n\r\n disabled = input<boolean>(false)\r\n options = input<DropdownOption[]>([], { alias: 'options' });\r\n buttonProperties = input<ButtonProperties | null>(null, { alias: 'buttonProperties' })\r\n hoverTrigger = input<boolean>(false)\r\n\r\n propiedades = signal(this.sesionService.getSession().propiedades)\r\n factores = signal(this.sesionService.getSession().factores)\r\n\r\n activeSubmenu = signal<{ [key: string]: boolean }>({})\r\n\r\n readonly visibleOptions = computed(() =>\r\n this.options().filter(opt =>\r\n opt.condition !== false &&\r\n (!opt.factor || this.factores()[opt.factor])\r\n )\r\n )\r\n\r\n readonly buttonProps = computed(() => this.buttonProperties())\r\n\r\n handleMainButtonMouseEnter() {\r\n if (this.hoverTrigger()) {\r\n this.dropdown.open()\r\n }\r\n }\r\n\r\n handleMainButtonMouseLeave() {\r\n if (this.hoverTrigger()) {\r\n if (!this.isMouseOverDropdown()) {\r\n this.closeAll()\r\n }\r\n }\r\n }\r\n\r\n handleDropdownMouseEnter() {\r\n if (this.hoverTrigger()) {\r\n this.keepOpen()\r\n }\r\n }\r\n\r\n handleDropdownMouseLeave() {\r\n if (this.hoverTrigger()) {\r\n if (!this.isMouseOverButton()) {\r\n this.closeAll()\r\n }\r\n }\r\n }\r\n\r\n private isMouseOverDropdown(): boolean {\r\n const dropdownElement = document.querySelector('.dropdown-menu')\r\n return dropdownElement?.contains(document.activeElement) || false\r\n }\r\n\r\n private isMouseOverButton(): boolean {\r\n const buttonElement = document.querySelector('[ngbDropdownToggle]')\r\n return buttonElement?.contains(document.activeElement) || false\r\n }\r\n\r\n private keepOpen() {\r\n if (this.dropdown) {\r\n this.dropdown.open()\r\n }\r\n }\r\n\r\n private closeAll() {\r\n if (this.dropdown) {\r\n this.dropdown.close()\r\n }\r\n this.submenuAnchors.forEach(anchor => anchor.close())\r\n this.activeSubmenu.set({})\r\n }\r\n\r\n mouseLeaveItem(dropdown: NgbDropdown, event: MouseEvent, optionText: string) {\r\n const submenuElementRef = this.submenuDivs.find(elRef =>\r\n this.visibleOptions().some(opt => opt.text == optionText && elRef.nativeElement.contains(event.relatedTarget))\r\n )\r\n if (!submenuElementRef) {\r\n dropdown.close()\r\n this.activeSubmenu.update(state => ({ ...state, [optionText]: false }))\r\n }\r\n }\r\n\r\n mouseLeaveSubmenu(dropdown: NgbDropdown, event: MouseEvent, optionText: string) {\r\n const parentElement = this.submenuAnchors.find(anchor =>\r\n anchor.open && anchor['id'] == optionText\r\n )\r\n const relatedTarget = event.relatedTarget as HTMLElement | null\r\n if (!parentElement || !relatedTarget || !parentElement['nativeElement'].contains(relatedTarget)) {\r\n dropdown.close()\r\n this.activeSubmenu.update(state => ({ ...state, [optionText]: false }))\r\n }\r\n }\r\n getVisibleSubmenuItems(submenuItems: any[]) {\r\n return submenuItems.filter(\r\n sub => sub.condition !== false && (!sub.factor || this.factores()[sub.factor])\r\n );\r\n }\r\n}","<div class=\"d-inline-block\" ngbDropdown container=\"body\">\r\n @if (buttonProps()) {\r\n <button \r\n [colorBtn]=\"buttonProps()?.color || null\" \r\n [colorOutlineBtn]=\"!buttonProps()?.color ? buttonProps()?.colorOutline : null\" [disabled]=\"disabled()\" class=\"button-tilt-hover pbp-6 wrap w-auto w-sm-100\"\r\n ngbDropdownToggle\r\n (mouseenter)=\"handleMainButtonMouseEnter()\"\r\n (mouseleave)=\"handleMainButtonMouseLeave()\">\r\n <i [iconName]=\"buttonProps()?.icon\" class=\"button-icon-hover\"></i> {{ buttonProps()?.texto }}\r\n </button>\r\n } @else {\r\n <button class=\"btn btn-sm border-0\" ngbDropdownToggle\r\n (mouseenter)=\"handleMainButtonMouseEnter()\"\r\n (mouseleave)=\"handleMainButtonMouseLeave()\"\r\n [disabled]=\"disabled()\"\r\n >\r\n <i class=\"fas fa-align-left fs-6 text-dark\"></i>\r\n </button>\r\n }\r\n\r\n <div ngbDropdownMenu class=\"my-0 py-0\"\r\n (mouseenter)=\"handleDropdownMouseEnter()\"\r\n (mouseleave)=\"handleDropdownMouseLeave()\">\r\n @for (option of visibleOptions(); track $index) {\r\n <div class=\"dropdown-item-with-submenu\" ngbDropdown #submenuAnchor=\"ngbDropdown\"\r\n (mouseenter)=\"submenuAnchor.open()\">\r\n @if (option.condition !== false && (!option.factor || factores()[option.factor])) {\r\n <app-button [icon]=\"option.icon\" [texto]=\"option.text\" (accion)=\"!option.upload && option.action()\"\r\n [uploadButton]=\"option.upload\" [accept]=\"option.accept\"\r\n (fileSelected)=\"option.fileAction && option.fileAction($event)\" [tooltip]=\"option.propertyDes || null\"\r\n [extraClass]=\"($index == 0 ? 'border-top-radius ' : '') + ($index == visibleOptions().length - 1 ? 'border-bottom-radius' : '')\"\r\n [buttonDeshabilitado]=\"option.property && !propiedades()[option.property]\" [dropdownButton]=\"true\"\r\n (mouseleave)=\"mouseLeaveItem(submenuAnchor, $event, option.text)\">\r\n @if (option.submenu) {\r\n <div ngbDropdownMenu placement=\"end\" class=\"my-0 py-0 submenu-container\" #submenuDiv\r\n (mouseleave)=\"mouseLeaveSubmenu(submenuAnchor, $event, option.text)\">\r\n @for (sub of getVisibleSubmenuItems(option.submenu); track $index; let last = $last) {\r\n <app-button [icon]=\"sub.icon\" [texto]=\"sub.text\" (accion)=\"!sub.upload && sub.action()\"\r\n [uploadButton]=\"sub.upload\" [accept]=\"sub.accept\" (fileSelected)=\"sub.fileAction && sub.fileAction($event)\"\r\n [tooltip]=\"sub.propertyDes || null\"\r\n [extraClass]=\"($index == 0 ? 'border-top-radius ' : '') + (last ? 'border-bottom-radius' : '')\"\r\n [buttonDeshabilitado]=\"sub.property && !propiedades()[sub.property]\" [dropdownButton]=\"true\" />\r\n }\r\n </div>\r\n }\r\n </app-button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</div>","import { Component, computed, input, output } from '@angular/core';\r\nimport { fadeInOut } from '../../../directivas/animaciones/fade-animation';\r\nimport { IconsDirective } from '../../../directivas/estilos/icons.directive';\r\n\r\n@Component({\r\n selector: 'app-paginador',\r\n imports: [IconsDirective],\r\n templateUrl: './paginador.component.html',\r\n styleUrl: './paginador.component.scss',\r\n animations:[fadeInOut]\r\n})\r\nexport class PaginadorComponent {\r\n\r\n cantidadDatos = computed(()=> this.data().length)\r\n contador = input<number>(1)\r\n data = input<any[]>([])\r\n avanzar = output<void>()\r\n retroceder = output<void>()\r\n position = input<'start'| 'center' | 'end'>('end')\r\n limit = input<number>(100)\r\n}\r\n","<div class=\"{{`d-flex justify-content-${position()} pe-3`}}\">\r\n <div class=\"contenedor d-flex justify-content-end align-items-center px-3 py-2 rounded-2 gap-1 bg-white\">\r\n <span class=\"fs-6 fw-6\"> Mostrando {{cantidadDatos()}}/{{limit()}} </span>\r\n <p class=\"bg-white px-3 py-1 my-0 mx-3 fs-7 rounded-2 fw-5 border-p\"> {{contador()}} </p>\r\n\r\n @if (contador() > 1) {\r\n <button @fadeInOut class=\"py-1 btn btn-sm shadow bg-white rounded-4 px-3 text-dark\" (click)=\"retroceder.emit()\">\r\n <i iconName=\"izquierda\"></i></button>\r\n }\r\n <button [disabled]=\"cantidadDatos() < limit()\" class=\"py-1 btn btn-sm btn-dark shadow rounded-4 px-3\"\r\n (click)=\"avanzar.emit()\"> <i iconName=\"derecha\"></i></button>\r\n </div>\r\n\r\n</div>","import { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\r\nimport { Component, computed, ContentChild, effect, ElementRef, inject, input, linkedSignal, model, output, QueryList, signal, TemplateRef, untracked, ViewChild, ViewChildren } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { DropdownCdkComponent } from \"../../dropdown/dropdown-cdk/dropdown-cdk.component\";\r\nimport { dropdownAnimation, fadeInOut } from '../../../directivas/animaciones/fade-animation';\r\nimport { CellRender, CellRendered } from '../../../models/cell-rendered';\r\nimport { validarBoolean } from '../../../directivas/utils/general/funciones';\r\n\r\n@Component({\r\n selector: 'app-table-advance',\r\n imports: [FormsModule, CommonModule, DatePipe, DecimalPipe, DropdownCdkComponent],\r\n templateUrl: './table-advance.component.html',\r\n styleUrl: './table-advance.component.scss',\r\n animations: [dropdownAnimation, fadeInOut],\r\n providers: [DatePipe, DecimalPipe]\r\n})\r\n\r\nexport class TableAdvanceComponent {\r\n \r\n @ViewChildren('thElement') tableHeaders!: QueryList<ElementRef>\r\n @ContentChild('customActions', { static: false }) customActions!: TemplateRef<any>\r\n /************@ViewChild('tableContainer') tableContainer!: ElementRef<HTMLElement>*/\r\n\r\n private datePipe = inject(DatePipe)\r\n private decimalPipe = inject(DecimalPipe)\r\n // private themeService = inject(ThemeService)\r\n /************virtualScrollService = inject(VirtualScrollService)*/\r\n\r\n\r\n rows = input<any[]>([])\r\n columns = input<any[]>([])\r\n withDetails = input<boolean>(false)\r\n withFiltro = input<boolean>(false)\r\n //mode = input<string>('normal')\r\n altoContainer = input<number>()\r\n\r\n emitirBusqueda = output<string>()\r\n emitirCheck = output<any>()\r\n emitirCheckCabecera = output<any>()\r\n emitirRadio = output<any>()\r\n emitirColumnasFiltrables = output<any>()\r\n\r\n colorHeader = input<'normal' | 'light'>('normal')\r\n isDarkMode = input<boolean>(false)\r\n busqueda = signal<string>('')\r\n //resizingColumn: HTMLElement | null = null\r\n //startX: number = 0\r\n //startWidth: number = 0\r\n\r\n selectedRow = model<any>(null)\r\n\r\n identifier = input<string[]>([])\r\n\r\n altoContenedor = signal<number>(0)\r\n\r\n showPopoverColumn = signal<boolean>(false)\r\n\r\n showPopoverFilter = signal<boolean>(false)\r\n\r\n isHeaderOperation = signal<boolean>(false)\r\n\r\n withHeight = input<boolean>(false)\r\n rendered = input<CellRendered[]>([])\r\n\r\n withTotal = input<boolean>(false)\r\n\r\n withCheckbox = input<boolean>(false)\r\n selectItems = model<(number | string)[]>([])\r\n\r\n // $isDarkMode = this.themeService.isDarkMode\r\n\r\n rowFilter = computed(() => {\r\n const term = this.busqueda().toLowerCase()\r\n const currentRows = this.rows?.() || []\r\n return currentRows.filter(item => this.filtraItem(item, term))\r\n })\r\n\r\n filtrarColumnas = linkedSignal(() => {\r\n const columns = this.columns()\r\n const filtro: { [caption: string]: boolean } = {}\r\n columns.forEach((col) => {\r\n if (col.fieldname) {\r\n filtro[col.fieldname] = true\r\n }\r\n })\r\n return filtro\r\n })\r\n\r\n toggleFiltros(event: Event) {\r\n const checked = (event.target as HTMLInputElement).checked\r\n const filtros = this.filtrarColumnas()\r\n Object.keys(filtros).forEach(key => {\r\n filtros[key] = checked\r\n })\r\n }\r\n\r\n visibilidadColumn = linkedSignal(() => {\r\n const columns = this.columns()\r\n const columnVisibility: { [caption: string]: boolean } = {}\r\n columns.forEach((col) => {\r\n if (col.caption) {\r\n columnVisibility[col.caption] = true\r\n }\r\n })\r\n return columnVisibility\r\n })\r\n\r\n concatenarValue(obj: any, value: string[]) {\r\n let result = ''\r\n value.forEach(el => {\r\n result += obj[el]\r\n })\r\n return result\r\n }\r\n\r\n checkString = {\r\n 'S': 'Activo',\r\n 'N': 'Inactivo'\r\n }\r\n\r\n sortColumn: string | null = null\r\n sortDirection: 'asc' | 'desc' = 'asc'\r\n\r\n expandedRows: number = -1\r\n\r\n constructor() {\r\n effect(() => {\r\n const size = (this.rowFilter() ?? []).length\r\n\r\n const alto = this.altoContainer()\r\n if (alto > 0 && alto < this.altoContenedor()) {\r\n setTimeout(() => {\r\n this.altoContenedor.set(alto)\r\n }, 300)\r\n }\r\n if (alto > 0 && alto > this.altoContenedor()) {\r\n this.altoContenedor.set(alto)\r\n }\r\n\r\n const selected = untracked(() => this.selectedRow())\r\n if (size > 0 && selected) {\r\n queueMicrotask(() => {\r\n const el = document.getElementById('row_table_' + selected)\r\n el?.scrollIntoView({ behavior: 'smooth', block: 'nearest' })\r\n })\r\n }\r\n })\r\n }\r\n\r\n togglePopoverColumn() {\r\n this.showPopoverColumn.update(prev => !prev)\r\n }\r\n\r\n togglePopoverFilter() {\r\n this.showPopoverFilter.update(prev => !prev)\r\n }\r\n\r\n selectRow(index: any) {\r\n if (this.identifier().length < 1) {\r\n return this.selectedRow.set(index)\r\n }\r\n this.selectedRow.set(this.concatenarValue(index, this.identifier()))\r\n }\r\n\r\n getTipoCampo(fieldname: string): string {\r\n const columna = this.columns().find(col => col.fieldname == fieldname)\r\n return columna?.tipo ?? 'string'\r\n }\r\n\r\n sortTable(column: string) {\r\n if (this.sortColumn == column) {\r\n this.sortDirection = this.sortDirection == 'asc' ? 'desc' : 'asc'\r\n } else {\r\n this.sortColumn = column\r\n this.sortDirection = 'asc'\r\n }\r\n\r\n this.rowFilter().sort((a, b) => {\r\n const valueA = a[column] ?? ''\r\n const valueB = b[column] ?? ''\r\n\r\n if (typeof valueA == 'number' && typeof valueB == 'number') {\r\n return this.sortDirection == 'asc' ? valueA - valueB : valueB - valueA\r\n } else {\r\n return this.sortDirection == 'asc'\r\n ? valueA.toString().localeCompare(valueB.toString())\r\n : valueB.toString().localeCompare(valueA.toString())\r\n }\r\n })\r\n }\r\n\r\n toggleExpandRow(index: number) {\r\n this.expandedRows = this.expandedRows == index ? -1 : index\r\n }\r\n\r\n textoDigitado(event: Event) {\r\n const value = (event.target as HTMLInputElement).value\r\n this.busqueda.set(value)\r\n }\r\n\r\n getHighlight(text: any, fieldname: string): string {\r\n if (text == null) {\r\n text = ''\r\n }\r\n if (!this.filtrarColumnas()[fieldname] || !this.busqueda()) return text\r\n if (typeof text !== 'string') {\r\n text = text.toString()\r\n }\r\n const regex = new RegExp(`(${this.busqueda()})`, 'gi')\r\n return text?.replace(regex, '<mark>$1</mark>')\r\n }\r\n\r\n desglozarValor = (valor: string) => {\r\n return valor!.split(',')\r\n }\r\n\r\n getSituacionNumberFromColumns(row: any, columns: any[]): number {\r\n const situacionColumn = columns.find(col => col.type == 'situacion_number')\r\n if (situacionColumn) {\r\n return row[situacionColumn.prop] || 0\r\n }\r\n return 0\r\n }\r\n\r\n clickCheck(item: string, event: Event, row: any) {\r\n if (this.isHeaderOperation()) return\r\n\r\n const check = event.target as HTMLInputElement\r\n const resultCheck = check.checked ? 1 : 0\r\n const mes = item.at(-1)\r\n const formatObj = { ...row, check: resultCheck, mes }\r\n this.emitirCheck.emit(formatObj)\r\n }\r\n\r\n areAllChecked(fieldname: string): boolean {\r\n const rows = this.rowFilter()\r\n return rows.length > 0 && rows.every(row => row[fieldname] == 1 || row[fieldname] == 'S')\r\n }\r\n\r\n toggleAllCheckboxes(event: Event, fieldname: string, rows: any[]) {\r\n const check = event.target as HTMLInputElement\r\n this.isHeaderOperation.set(true)\r\n\r\n rows.forEach(row => {\r\n row[fieldname] = check.checked ? 'S' : 0\r\n })\r\n\r\n const formatObj = {\r\n ...rows,\r\n todos: check.checked ? 'S' : 'N',\r\n field: fieldname\r\n }\r\n this.emitirCheckCabecera.emit(formatObj)\r\n this.isHeaderOperation.set(false)\r\n }\r\n\r\n clickRadio(row: any) {\r\n const formatObj = { ...row }\r\n this.emitirRadio.emit(formatObj)\r\n }\r\n\r\n private filtraItem(item: any, term: string): boolean {\r\n const columnasActivas = Object.entries(this.filtrarColumnas())\r\n .filter(([_campo, activo]) => activo)\r\n return columnasActivas.some(([campo]) => {\r\n let valor = item[campo]\r\n const tipo = this.getTipoCampo(campo)\r\n switch (tipo) {\r\n case 'fecha':\r\n valor = this.datePipe.transform(valor, 'dd/MM/yyyy') ?? ''\r\n break\r\n case 'decimal':\r\n valor = this.decimalPipe.transform(valor, '1.2-2') ?? ''\r\n break\r\n case 'check':\r\n valor = valor ? 'Sí' : 'No'\r\n break\r\n default:\r\n valor = (valor ?? '').toString()\r\n }\r\n return valor.toLowerCase().includes(term)\r\n })\r\n }\r\n\r\n validaVisibilidad(value: boolean) {\r\n return validarBoolean(value)\r\n }\r\n\r\n allCheck(event: Event) {\r\n const input = event.target as HTMLInputElement\r\n if (this.withCheckbox() && this.withFiltro()) {\r\n const keys = this.rowFilter().map(row =>\r\n this.identifier().length > 0\r\n ? this.concatenarValue(row, this.identifier())\r\n : JSON.stringify(row)\r\n )\r\n this.selectItems.set(input.checked ? keys : [])\r\n return\r\n }\r\n if (input.checked) {\r\n const total = this.rows().map((_, i) => i)\r\n this.selectItems.set(total)\r\n } else {\r\n this.selectItems.set([])\r\n }\r\n }\r\n\r\n validaAllCheck(): boolean {\r\n if (this.withCheckbox() && this.withFiltro()) {\r\n const keys = this.rowFilter().map(row =>\r\n this.identifier().length > 0\r\n ? this.concatenarValue(row, this.identifier())\r\n : JSON.stringify(row)\r\n )\r\n return (\r\n keys.length > 0 &&\r\n keys.every(k => this.selectItems().includes(k))\r\n )\r\n }\r\n const total = this.rows().length\r\n return this.selectItems().length == total && total > 0\r\n }\r\n\r\n isItemSelected(index: number): boolean {\r\n if (this.withCheckbox() && this.withFiltro()) {\r\n const row = this.rowFilter()[index]\r\n const key = this.identifier().length > 0\r\n ? this.concatenarValue(row, this.identifier())\r\n : JSON.stringify(row)\r\n\r\n return this.selectItems().includes(key)\r\n }\r\n return this.selectItems().includes(index)\r\n }\r\n\r\n toogleItem(index: number, event: Event) {\r\n const input = event.target as HTMLInputElement\r\n\r\n if (this.withCheckbox() && this.withFiltro()) {\r\n const row = this.rowFilter()[index]\r\n const key = this.identifier().length > 0\r\n ? this.concatenarValue(row, this.identifier())\r\n : JSON.stringify(row)\r\n\r\n if (input.checked) {\r\n this.selectItems.update(sel => [...sel, key])\r\n } else {\r\n this.selectItems.update(sel => sel.filter(s => s != key))\r\n }\r\n return\r\n }\r\n\r\n if (input.checked) {\r\n this.selectItems.update(sel => [...sel, index])\r\n } else {\r\n this.selectItems.update(sel => sel.filter(s => s != index))\r\n }\r\n }\r\n\r\n resolveCell(col: string, row: any): CellRender | null {\r\n const value = row[col]\r\n const r = this.rendered().find(r => r.matches(col, value, row))\r\n return r ? r.render(value, row) : null\r\n }\r\n\r\n getTotals(fieldname: string): number {\r\n const itemsSelected = this.withCheckbox() ? this.rows().filter((_item, index) => this.selectItems().includes(index)) : this.rows()\r\n return itemsSelected.reduce((acc, row) => {\r\n const val = row[fieldname]\r\n return acc + (typeof val == 'number' ? val : 0)\r\n }, 0)\r\n }\r\n\r\n getColspanBeforeTotals(): number {\r\n const firstTotalizableIndex = this.columns().findIndex(c => c.totalizable)\r\n const result = firstTotalizableIndex >= 0 ? firstTotalizableIndex : this.columns.length\r\n return this.withCheckbox() ? result + 1 : result\r\n }\r\n\r\n getRowClass(row: any): { [key: string]: boolean } {\r\n return {\r\n 'text-error': row.situac == 'J',\r\n 'text-alerta': row.situac == 'L'\r\n }\r\n }\r\n}\r\n","@if (withFiltro()) {\r\n<div class=\"col-12 mb-2 mt-2 d-flex justify-content-end align-items-center position-relative\">\r\n <label for=\"\" class=\"form-label me-2 pt-2\">Buscar</label>\r\n <input type=\"text\" class=\"form-control cw-250\" (input)=\"textoDigitado($event)\">\r\n <button (click)=\"togglePopoverFilter()\" class=\"btn btn-dark boton-buscar fs-7\">\r\n <i class=\"fas fa-cog\"></i>\r\n </button>\r\n @if (showPopoverFilter()) {\r\n <div class=\"popover-menu-filter shadow\" @dropdownAnimation>\r\n <div class=\"popover-title fs-7\">Filtros</div>\r\n <div class=\"form-check form-switch text-start\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"true\" (change)=\"toggleFiltros($event)\">\r\n <label class=\"form-check-label\">Todos</label>\r\n </div>\r\n @for (col of columns(); track col.caption) {\r\n <div class=\"form-check form-switch text-start\">\r\n <input type=\"checkbox\" class=\"form-check-input\" id=\"{{ 'filter_' + col.caption }}\"\r\n [(ngModel)]=\"filtrarColumnas()[col.fieldname]\" />\r\n <label class=\"form-check-label\" for=\"{{ 'filter_' + col.caption }}\">\r\n {{ col.caption }}\r\n </label>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n}\r\n\r\n<!---\r\n<div class=\"table-container table-responsive\" #tableContainer\r\n [style.max-height]=\"altoContenedor()? 'calc(100vh - ' + altoContenedor() + 'px)' : ''\"\r\n (scroll)=\"onTableScroll($event)\">\r\n-->\r\n<div class=\"table-container table-responsive\"\r\n [style.height]=\"withHeight() && altoContenedor() ? 'calc(100vh - ' + altoContenedor() + 'px)' : ''\"\r\n [style.max-height]=\"altoContenedor()? 'calc(100vh - ' + altoContenedor() + 'px)' : ''\">\r\n <div>\r\n <!-- [style.height]=\"virtualScrollService.getTotalHeight(itemHeight(), rowFilter().length)\" -->\r\n <table #table class=\"table table-striped normal-table\" [ngClass]=\"isDarkMode() ? 'table-dark' : ''\">\r\n <thead>\r\n <tr class=\"shadow-sm\">\r\n @if (withDetails()) {\r\n <th class=\"cw-20 b-table\" [ngClass]=\"colorHeader()== 'normal' ? 'h-table' : ''\"></th>\r\n }\r\n\r\n @if (withCheckbox()) {\r\n <th class=\"cw-20 b-table\" [ngClass]=\"colorHeader()== 'normal' ? 'h-table' : ''\">\r\n <input type=\"checkbox\" class=\"form-check-input fs-8 border border-secondary\"\r\n [checked]=\"validaAllCheck()\" (change)=\"allCheck($event)\">\r\n </th>\r\n }\r\n\r\n @if (customActions) {\r\n <th class=\"cw-40 b-table\" [ngClass]=\"colorHeader()== 'normal' ? 'h-table' : ''\">\r\n\r\n <app-dropdown-cdk>\r\n <ng-template #trigger >\r\n <button class=\"btn p-0 text-dark d-flex mx-auto border-0\">\r\n <i class=\"fas fa-cog\"></i>\r\n </button>\r\n </ng-template>\r\n <ng-template #content>\r\n <div class=\"popover-menu-column bg-white shadow\" @dropdownAnimation>\r\n <div class=\"popover-title fs-7 bg-white\">Columnas</div>\r\n @for (col of columns(); track col.caption) {\r\n @if (col.caption) {\r\n <div class=\"form-check form-switch text-start align-items-center d-flex\">\r\n <input type=\"checkbox\" class=\"form-check-input py-0 my-0 cw-25 ch-15\"\r\n id=\"{{'switch_' + col.caption}}\" [(ngModel)]=\"visibilidadColumn()[col.caption]\" />\r\n <label class=\"form-check-label ps-1 fs-6 cursor-pointer font-label\"\r\n for=\"{{'switch_' + col.caption}}\">{{ col.caption }}</label>\r\n </div>\r\n }\r\n }\r\n </div>\r\n </ng-template>\r\n </app-dropdown-cdk>\r\n\r\n <!-- <button (click)=\"togglePopoverColumn()\" class=\"btn p-0 text-dark d-flex mx-auto border-0\">\r\n <i class=\"fas fa-cog\"></i>\r\n </button>\r\n @if (showPopoverColumn()) {\r\n <div class=\"popover-menu-column shadow\" @dropdownAnimation>\r\n <div class=\"popover-title fs-7\">Columnas</div>\r\n @for (col of columns(); track col.caption) {\r\n @if (col.caption) {\r\n <div class=\"form-check form-switch text-start\">\r\n <input type=\"checkbox\" class=\"form-check-input py-0 my-0 cw-25 ch-15\"\r\n id=\"{{'switch_' + col.caption}}\" [(ngModel)]=\"visibilidadColumn()[col.caption]\" />\r\n <label class=\"form-check-label ps-1 fs-6 cursor-pointer font-label\"\r\n for=\"{{'switch_' + col.caption}}\">{{ col.caption }}</label>\r\n </div>\r\n }\r\n }\r\n </div>\r\n } -->\r\n </th>\r\n }\r\n @for (column of columns(); track $index) {\r\n @if (validaVisibilidad(column.visible) && visibilidadColumn()[column.caption] !== false) {\r\n <th class=\"b-table\" #thElement [title]=\"column.caption\"\r\n [ngClass]=\"colorHeader()== 'normal' ? 'h-table' : ''\">\r\n {{ column.caption }}\r\n @if(column.caption){\r\n @if (sortColumn == column.fieldname) {\r\n <span (click)=\"sortTable(column.fieldname)\" class=\"cursor-pointer\">\r\n <i [ngClass]=\"sortDirection == 'asc' ? 'fas fa-angle-up fs-6':'fas fa-angle-down fs-6'\"></i>\r\n </span>\r\n }\r\n @if (sortColumn !== column.fieldname) {\r\n <i class=\"fas fa-sort icon-sort cursor-pointer\" (click)=\"sortTable(column.fieldname)\"></i>\r\n }\r\n @if (column.tipoCaption === 'check-input') {\r\n <input type=\"checkbox\" class=\"form-check-input fs-8 ms-2 border border-secondary\"\r\n [checked]=\"areAllChecked(column.fieldname)\"\r\n (change)=\"column.event ? toggleAllCheckboxes($event, column.fieldname, rowFilter()) : null\">\r\n }\r\n }\r\n </th>\r\n }\r\n }\r\n </tr>\r\n </thead>\r\n <!--\r\n <tbody\r\n [style.transform]=\"virtualScrollService.getTransform(visibleRange().start, itemHeight())\"\r\n [style.min-height]=\"itemHeight() * rowFilter().length + 'px'\">\r\n @for (row of visibleRows(); track $index) {\r\n <tr [ngClass]=\"{'table-active': (identifier().length < 1 ? selectedRow() == $index : selectedRow() == concatenarValue(row,identifier())), \r\n 'grilla-error': getSituacionNumberFromColumns(row, columns()) == 9}\"\r\n (click)=\"selectRow(identifier().length < 1 ? $index : row)\"\r\n [id]=\"identifier().length < 1 ? ('row_table_' + $index) : ('row_table_'+ concatenarValue(row,identifier()))\">\r\n -->\r\n <tbody>\r\n @for (row of rowFilter(); track $index) {\r\n <tr [ngClass]=\"{'table-active': (identifier().length < 1 ? selectedRow() == $index : selectedRow() == concatenarValue(row,identifier())), \r\n 'grilla-error': getSituacionNumberFromColumns(row, columns()) == 9}\"\r\n (click)=\"selectRow(identifier().length < 1 ? $index : row)\"\r\n [id]=\"identifier().length < 1 ? ('row_table_' + $index) : ('row_table_'+ concatenarValue(row,identifier()))\">\r\n @if (withDetails()) {\r\n <td class=\"b-table text-center mwp-25\">\r\n <a (click)=\"toggleExpandRow($index)\" class=\"text-dark cursor-pointer fs-6\">\r\n <i class=\"fa-solid\" [class.fa-chevron-right]=\"expandedRows != $index\"\r\n [class.fa-chevron-down]=\"expandedRows == $index\"></i>\r\n </a>\r\n </td>\r\n }\r\n\r\n @if (withCheckbox()) {\r\n <td scope=\"col\" class=\"text-center b-table\">\r\n <input type=\"checkbox\" class=\"form-check-input fs-8 border border-secondary my-0 py-0\"\r\n [checked]=\"isItemSelected($index)\" (change)=\"toogleItem($index, $event)\">\r\n </td>\r\n }\r\n\r\n @if (customActions) {\r\n <td class=\"text-center mwp-90 b-table\">\r\n <ng-container *ngTemplateOutlet=\"customActions; context: { $implicit: row }\"></ng-container>\r\n </td>\r\n }\r\n @for (column of columns(); track $index) {\r\n @if (validaVisibilidad(column.visible) && visibilidadColumn()[column.caption] !== false) {\r\n @switch (column.tipo) {\r\n @case ('fecha') {\r\n <td [innerHTML]=\"getHighlight(row[column.fieldname] | date:'dd/MM/yyyy', column.fieldname)\"\r\n [title]=\"row[column.fieldname] | date:'dd/MM/yyyy'\"\r\n [ngClass]=\"getRowClass(row)\"\r\n class=\"text-center b-table\">\r\n </td>\r\n }\r\n\r\n @case ('date') {\r\n <td [innerHTML]=\"getHighlight(row[column.fieldname] | date:'dd/MM/yyyy', column.fieldname)\"\r\n [title]=\"row[column.fieldname] | date:'dd/MM/yyyy'\"\r\n [ngClass]=\"getRowClass(row)\"\r\n class=\"text-center b-table\">\r\n </td>\r\n }\r\n\r\n @case ('situacion') {\r\n <td [innerHTML]=\"getHighlight(row[column.fieldname], column.fieldname)\"\r\n [title]=\"row[column.fieldname]\"\r\n [ngClass]=\"getRowClass(row)\" class=\"b-table\">\r\n </td>\r\n }\r\n\r\n @case ('decimal') {\r\n <td class=\"text-end b-table\"\r\n [innerHTML]=\"getHighlight((row[column.fieldname] ?? 0) | number:'1.' + (column.decimales ?? 2) + '-' + (column.decimales ?? 2), column.fieldname)\"\r\n [title]=\"(row[column.fieldname] ?? 0) | number:'1.' + (column.decimales ?? 2) + '-' + (column.decimales ?? 2)\"\r\n [ngClass]=\"getRowClass(row)\">\r\n </td>\r\n }\r\n\r\n @case ('number') {\r\n <td class=\"text-end b-table\"\r\n [innerHTML]=\"getHighlight((row[column.fieldname] ?? 0) | number:'1.' + (column.decimales ?? 2) + '-' + (column.decimales ?? 2), column.fieldname)\"\r\n [title]=\"(row[column.fieldname] ?? 0) | number:'1.' + (column.decimales ?? 2) + '-' + (column.decimales ?? 2)\"\r\n [ngClass]=\"getRowClass(row)\">\r\n </td>\r\n }\r\n\r\n @case ('text-center') {\r\n <td class=\"text-center b-table\" [innerHTML]=\"getHighlight(row[column.fieldname], column.fieldname)\"\r\n [title]=\"row[column.fieldname]\"\r\n [ngClass]=\"getRowClass(row)\">\r\n </td>\r\n }\r\n\r\n @case ('check') {\r\n <td class=\"text-center b-table\" [title]=\"checkString[row[column.fieldname]]\">\r\n <i class=\"fs-5\"\r\n [ngClass]=\"row[column.fieldname] == 'S'?'fas fa-check yes-icon':'fas fa-times no-icon'\"></i>\r\n </td>\r\n }\r\n\r\n @case ('check-input') {\r\n <td class=\"text-center b-table\">\r\n <input type=\"checkbox\" class=\"form-check-input fs-8 border border-secondary\"\r\n [checked]=\"row[column.fieldname] == 1 || row[column.fieldname] == 'S'\"\r\n (change)=\"column.event ? clickCheck(column.fieldname,$event,row) : null\">\r\n </td>\r\n }\r\n\r\n @case ('radio-input') {\r\n <td class=\"text-center b-table\">\r\n @if (!column.condition || column.condition(row)) {\r\n <input type=\"radio\" class=\"form-check-input fs-8 mtn-0 border border-secondary\"\r\n name=\"radioGroup\" (change)=\"column.event ? clickRadio(row) : null\">\r\n }\r\n </td>\r\n }\r\n\r\n @case ('mostrar') {\r\n @if (column.condition()) {\r\n <td [innerHTML]=\"getHighlight(row[column.fieldname], column.fieldname)\"\r\n [title]=\"row[column.fieldname]\" class=\"b-table\">\r\n </td>\r\n }\r\n }\r\n\r\n @case ('cell-render') {\r\n @let resolverItem = resolveCell(column.fieldname, row);\r\n @if (resolverItem) {\r\n <td class=\"b-table\" [title]=\"resolverItem.text\" [class.text-center]=\"resolverItem.icon\">\r\n @if (resolverItem.icon) {\r\n <i class=\"fs-5\" [ngClass]=\"resolverItem.icon\"></i>\r\n } @else if (resolverItem.class) {\r\n <span [ngClass]=\"row.situac == 'J' ? 'text-error' : resolverItem.class\">\r\n {{ resolverItem.text }}\r\n </span>\r\n } @else {\r\n {{ resolverItem.text }}\r\n }\r\n </td>\r\n }\r\n }\r\n\r\n @default {\r\n <td [innerHTML]=\"getHighlight(row[column.fieldname], column.fieldname)\"\r\n [title]=\"row[column.fieldname]\"\r\n [ngClass]=\"getRowClass(row)\" class=\"b-table\">\r\n </td>\r\n }\r\n }\r\n }\r\n }\r\n </tr>\r\n @if ($index == expandedRows) {\r\n <tr @fadeInOut>\r\n <td [attr.colspan]=\"columns().length + (withDetails()? 1 : 0) + (customActions ? 1 : 0)\"\r\n class=\"table-blank\">\r\n <div class=\"d-flex flex-column auditoria\">\r\n <span class=\"fw-bold fs-7 text-dark\">Datos de auditoría</span>\r\n <span class=\"fs-6 text-dark fw-bold\">\r\n Creación: {{ row.nomucreac }} el {{ row.fcreac | date:'dd/MM/yyyy' }} a las {{\r\n row.hcreac }}\r\n </span>\r\n <span class=\"fs-6 text-dark fw-bold\">\r\n Actualización: {{ row.nomuactua }} el {{ row.factua | date:'dd/MM/yyyy' }} a las {{\r\n row.hactua }}\r\n </span>\r\n </div>\r\n </td>\r\n </tr>\r\n }\r\n }\r\n </tbody>\r\n\r\n @if (withTotal()) {\r\n <tfoot>\r\n <tr>\r\n <td class=\"b-table\" [attr.colspan]=\"getColspanBeforeTotals()\">Totales:</td>\r\n @for (col of columns() ; track $index) {\r\n @if (col.totalizable) {\r\n <td class=\"b-table text-end\">\r\n {{ getTotals(col.fieldname) | number:'1.2-2'}}\r\n </td>\r\n }\r\n }\r\n </tr>\r\n </tfoot>\r\n }\r\n </table>\r\n </div>\r\n</div>","import { DatePipe, DecimalPipe, NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, computed, contentChild, effect, ElementRef, HostListener, inject, input, linkedSignal, model, output, QueryList, signal, TemplateRef, untracked, viewChild, ViewChild, ViewChildren } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { DropdownCdkComponent } from \"../../dropdown/dropdown-cdk/dropdown-cdk.component\";\r\nimport { CardMobileComponent } from \"../card-mobile/card-mobile.component\";\r\nimport { dropdownAnimation, fadeInOut } from '../../../directivas/animaciones/fade-animation';\r\nimport { CellRender, CellRendered } from '../../../models/cell-rendered';\r\nimport { formatNumber, validarBoolean } from '../../../directivas/utils/general/funciones';\r\nimport { TableData } from '../../../models/table-data.model';\r\n\r\n@Component({\r\n selector: 'app-table-advance-optimizada',\r\n imports: [DropdownCdkComponent, FormsModule, NgClass, NgTemplateOutlet, CardMobileComponent],\r\n templateUrl: './table-advance-optimizada.component.html',\r\n styleUrl: './table-advance-optimizada.component.scss',\r\n animations: [dropdownAnimation, fadeInOut],\r\n providers: [DatePipe, DecimalPipe],\r\n changeDetection:ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TableAdvanceOptimizadaComponent {\r\n\r\n // @ViewChildren('thElement') tableHeaders!: QueryList<ElementRef>\r\n // @ContentChild('customActions', { static: false }) customActions!: TemplateRef<any>\r\n tableHeaders = viewChild<QueryList<ElementRef>>('thElement')\r\n customActions = contentChild<TemplateRef<any>>('customActions')\r\n anchor = viewChild<ElementRef<HTMLTableRowElement>>('anchor')\r\n /************@ViewChild('tableContainer') tableContainer!: ElementRef<HTMLElement>*/\r\n\r\n private decimalPipe = inject(DecimalPipe)\r\n // private themeService = inject(ThemeService)\r\n titleTabla = input<string>('Contrato')\r\n /************virtualScrollService = inject(VirtualScrollService)*/\r\n\r\n\r\n rows = input<any[]>([])\r\n columns = input<any[]>([])\r\n withDetails = input<boolean>(false)\r\n withFiltro = input<boolean>(false)\r\n altoContainer = input<number>()\r\n colorHeader = input<'normal' | 'light'>('normal')\r\n\r\n busqueda = signal<string>('')\r\n selectedRow = model<any>(null)\r\n identifier = input<string[]>([])\r\n\r\n altoContenedor = signal<number>(0)\r\n showPopoverFilter = signal<boolean>(false)\r\n withHeight = input<boolean>(false)\r\n rendered = input<CellRendered[]>([])\r\n withTotal = input<boolean>(false)\r\n withCheckbox = input<boolean>(false)\r\n selectItems = model<(number | string)[]>([])\r\n isDarkMode = input<boolean>(false)\r\n\r\n sortColumn: string | null = null\r\n sortDirection: 'asc' | 'desc' = 'asc'\r\n expandedRows: number = -1\r\n\r\n\r\n /* VARIABLES PARA OPTIMIZAR */\r\n dataVirtual = signal<any[]>([])\r\n isLoading = signal(false);\r\n isLoadingResponsive = signal(false)\r\n // private batchSize = 30;\r\n private loadedCount = 0;\r\n private observer!: IntersectionObserver;\r\n maxItems = input<number>(50)\r\n batchSize = input<number>(40)\r\n\r\n\r\n rowFilter = computed(() => {\r\n const term = this.busqueda().toLowerCase()\r\n const currentRows = this.rows?.() || []\r\n return currentRows.filter(item => this.filtraItem(item, term))\r\n })\r\n\r\n filtrarColumnas = linkedSignal(() => {\r\n const columns = this.columns()\r\n const filtro: { [caption: string]: boolean } = {}\r\n columns.forEach((col) => {\r\n if (col.fieldname) {\r\n filtro[col.fieldname] = true\r\n }\r\n })\r\n return filtro\r\n })\r\n\r\n toggleFiltros(event: Event) {\r\n const checked = (event.target as HTMLInputElement).checked\r\n const filtros = this.filtrarColumnas()\r\n Object.keys(filtros).forEach(key => {\r\n filtros[key] = checked\r\n })\r\n }\r\n\r\n visibilidadColumn = linkedSignal(() => {\r\n const columns = this.columns()\r\n const columnVisibility: { [caption: string]: boolean } = {}\r\n columns.forEach((col) => {\r\n if (col.caption) {\r\n columnVisibility[col.caption] = true\r\n }\r\n })\r\n return columnVisibility\r\n })\r\n\r\n concatenarValue(obj: any, value: string[]) {\r\n let result = ''\r\n value.forEach(el => {\r\n result += obj[el]\r\n })\r\n return result\r\n }\r\n\r\n checkString = {\r\n 'S': 'Activo',\r\n 'N': 'Inactivo'\r\n }\r\n\r\n isMobile = signal<boolean>(window.innerWidth <= 768)\r\n\r\n constructor() {\r\n effect(() => {\r\n const size = (this.rowFilter() ?? []).length\r\n\r\n const alto = this.altoContainer()\r\n if (alto > 0 && alto < this.altoContenedor()) {\r\n setTimeout(() => {\r\n this.altoContenedor.set(alto)\r\n }, 300)\r\n }\r\n if (alto > 0 && alto > this.altoContenedor()) {\r\n this.altoContenedor.set(alto)\r\n }\r\n\r\n // if(size > 0 && this.isInit) {\r\n // this.loadMore()\r\n // this.isInit = false\r\n // }\r\n\r\n const selected = untracked(() => this.selectedRow())\r\n if (size > 0 && selected) {\r\n queueMicrotask(() => {\r\n const el = document.getElementById('row_table_' + selected)\r\n el?.scrollIntoView({ behavior: 'smooth', block: 'nearest' })\r\n })\r\n }\r\n })\r\n\r\n effect(() => {\r\n // console.log(\"Ejecutandose el effects\")\r\n const filtered = this.rowFilter();\r\n const firstBatch = filtered.slice(0, this.batchSize());\r\n this.dataVirtual.set(firstBatch);\r\n this.loadedCount = firstBatch.length;\r\n // this.loadedCount = 0;\r\n // this.dataVirtual.set(filtered.slice(0, this.batchSize()));\r\n });\r\n\r\n effect(() => {\r\n this.isMobile();\r\n this.isLoadingResponsive.set(true);\r\n setTimeout(() => this.isLoadingResponsive.set(false), 200);\r\n });\r\n\r\n effect(() => {\r\n if(this.anchor()) {\r\n this.actionsAnchor()\r\n }\r\n })\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event: any) {\r\n this.isMobile.set(event.target.innerWidth <= 768);\r\n }\r\n\r\n actionsAnchor() {\r\n this.observer = new IntersectionObserver(entries => {\r\n if (entries[0].isIntersecting && this.loadedCount < this.rowFilter().length && !this.isLoading()) {\r\n this.loadMore();\r\n }\r\n });\r\n this.observer.observe(this.anchor().nativeElement);\r\n }\r\n\r\n // ngAfterViewInit() {\r\n // const anchorEl = this.anchor();\r\n // if (!anchorEl) {\r\n // console.warn('Anchor todavía no existe');\r\n // return;\r\n // }\r\n // this.observer = new IntersectionObserver(entries => {\r\n // if (entries[0].isIntersecting && this.loadedCount < this.rowFilter().length && !this.isLoading()) {\r\n // this.loadMore();\r\n // }\r\n // });\r\n // this.observer.observe(this.anchor().nativeElement);\r\n // }\r\n\r\n togglePopoverFilter() {\r\n this.showPopoverFilter.update(prev => !prev)\r\n }\r\n\r\n selectRow(index: any) {\r\n if (this.identifier().length < 1) {\r\n return this.selectedRow.set(index)\r\n }\r\n this.selectedRow.set(this.concatenarValue(index, this.identifier()))\r\n }\r\n\r\n sortTable(column: string) {\r\n if (this.sortColumn == column) {\r\n this.sortDirection = this.sortDirection == 'asc' ? 'desc' : 'asc'\r\n } else {\r\n this.sortColumn = column\r\n this.sortDirection = 'asc'\r\n }\r\n\r\n this.rowFilter().sort((a, b) => {\r\n const valueA = a[column] ?? ''\r\n const valueB = b[column] ?? ''\r\n\r\n if (typeof valueA == 'number' && typeof valueB == 'number') {\r\n return this.sortDirection == 'asc' ? valueA - valueB : valueB - valueA\r\n } else {\r\n return this.sortDirection == 'asc'\r\n ? valueA.toString().localeCompare(valueB.toString())\r\n : valueB.toString().localeCompare(valueA.toString())\r\n }\r\n })\r\n }\r\n\r\n toggleExpandRow(index: number) {\r\n this.expandedRows = this.expandedRows == index ? -1 : index\r\n }\r\n\r\n textoDigitado(event: Event) {\r\n const value = (event.target as HTMLInputElement).value\r\n this.busqueda.set(value)\r\n }\r\n\r\n getHighlight(text: any, fieldname: string): string {\r\n if (text == null) {\r\n text = ''\r\n }\r\n if (!this.filtrarColumnas()[fieldname] || !this.busqueda()) return text\r\n if (typeof text !== 'string') {\r\n text = text.toString()\r\n }\r\n const regex = new RegExp(`(${this.busqueda()})`, 'gi')\r\n return text?.replace(regex, '<mark>$1</mark>')\r\n }\r\n\r\n getSituacionNumberFromColumns(row: any, columns: any[]): number {\r\n const situacionColumn = columns.find(col => col.type == 'situacion_number')\r\n if (situacionColumn) {\r\n return row[situacionColumn.prop] || 0\r\n }\r\n return 0\r\n }\r\n\r\n private filtraItem(item: any, term: string): boolean {\r\n const columnasActivas = Object.entries(this.filtrarColumnas())\r\n .filter(([_campo, activo]) => activo)\r\n return columnasActivas.some(([campo]) => {\r\n const raw = item[campo];\r\n const formatted = item._format?.[campo];\r\n const valor = (formatted ?? raw ?? '').toString().toLowerCase();\r\n return valor.includes(term)\r\n })\r\n }\r\n\r\n validaVisibilidad(value: boolean) {\r\n return validarBoolean(value)\r\n }\r\n\r\n allCheck(event: Event) {\r\n const input = event.target as HTMLInputElement\r\n if (this.withCheckbox() && this.withFiltro()) {\r\n const keys = this.rowFilter().map(row =>\r\n this.identifier().length > 0\r\n ? this.concatenarValue(row, this.identifier())\r\n : JSON.stringify(row)\r\n )\r\n this.selectItems.set(input.checked ? keys : [])\r\n return\r\n }\r\n if (input.checked) {\r\n const total = this.rows().map((_, i) => i)\r\n this.selectItems.set(total)\r\n } else {\r\n this.selectItems.set([])\r\n }\r\n }\r\n\r\n validaAllCheck(): boolean {\r\n if (this.withCheckbox() && this.withFiltro()) {\r\n const keys = this.rowFilter().map(row =>\r\n this.identifier().length > 0\r\n ? this.concatenarValue(row, this.identifier())\r\n : JSON.stringify(row)\r\n )\r\n return (\r\n keys.length > 0 &&\r\n keys.every(k => this.selectItems().includes(k))\r\n )\r\n }\r\n const total = this.rows().length\r\n return this.selectItems().length == total && total > 0\r\n }\r\n\r\n isItemSelected(index: number): boolean {\r\n if (this.withCheckbox() && this.withFiltro()) {\r\n const row = this.rowFilter()[index]\r\n const key = this.identifier().length > 0\r\n ? this.concatenarValue(row, this.identifier())\r\n : JSON.stringify(row)\r\n\r\n return this.selectItems().includes(key)\r\n }\r\n return this.selectItems().includes(index)\r\n }\r\n\r\n toogleItem(index: number, event: Event) {\r\n const input = event.target as HTMLInputElement\r\n\r\n if (this.withCheckbox() && this.withFiltro()) {\r\n const row = this.rowFilter()[index]\r\n const key = this.identifier().length > 0\r\n ? this.concatenarValue(row, this.identifier())\r\n : JSON.stringify(row)\r\n\r\n if (input.checked) {\r\n this.selectItems.update(sel => [...sel, key])\r\n } else {\r\n this.selectItems.update(sel => sel.filter(s => s != key))\r\n }\r\n return\r\n }\r\n\r\n if (input.checked) {\r\n this.selectItems.update(sel => [...sel, index])\r\n } else {\r\n this.selectItems.update(sel => sel.filter(s => s != index))\r\n }\r\n }\r\n\r\n resolveCell(col: string, row: any): CellRender | null {\r\n const value = row[col]\r\n const r = this.rendered().find(r => r.matches(col, value, row))\r\n return r ? r.render(value, row) : null\r\n }\r\n\r\n getTotals(fieldname: string): string {\r\n const itemsSelected = this.withCheckbox() ? this.rows().filter((_item, index) => this.selectItems().includes(index)) : this.rows()\r\n const final = itemsSelected.reduce((acc, row) => {\r\n const val = row[fieldname]\r\n return acc + (typeof val == 'number' ? val : 0)\r\n }, 0)\r\n\r\n return formatNumber(this.decimalPipe,final) \r\n }\r\n\r\n getColspanBeforeTotals(): number {\r\n const firstTotalizableIndex = this.columns().findIndex(c => c.totalizable)\r\n const result = firstTotalizableIndex >= 0 ? firstTotalizableIndex : this.columns.length\r\n return this.withCheckbox() ? result + 1 : result\r\n }\r\n\r\n getRowClass(row: any): { [key: string]: boolean } {\r\n return {\r\n 'text-error': row.situac == 'J',\r\n 'text-alerta': row.situac == 'L'\r\n }\r\n }\r\n\r\n getPosition(col:TableData):string {\r\n if(col.position) return `text-${col.position}`\r\n if(col.tipo == 'decimal') return `text-end`\r\n if(col.tipo == 'fecha') return `text-center`\r\n return 'text-start'\r\n }\r\n\r\n private loadMore() {\r\n this.isLoading.set(true);\r\n setTimeout(() => {\r\n\r\n const current = this.dataVirtual();\r\n const next = this.rowFilter().slice(this.loadedCount, this.loadedCount + this.batchSize());\r\n const merged = [...current];\r\n for (const item of next) {\r\n if (!merged.some(x => x.id === item.id)) {\r\n merged.push(item);\r\n }\r\n }\r\n this.dataVirtual.set(merged);\r\n this.loadedCount += next.length;\r\n this.isLoading.set(false);\r\n }, 100);\r\n }\r\n\r\n}\r\n","@if (withFiltro()) {\r\n<div class=\"col-12 mb-2 mt-2 d-flex justify-content-end align-items-center position-relative\">\r\n <label for=\"\" class=\"form-label me-2 pt-2\">Buscar</label>\r\n <input type=\"text\" class=\"form-control cw-250\" (input)=\"textoDigitado($event)\">\r\n <button (click)=\"togglePopoverFilter()\" class=\"btn btn-dark boton-buscar fs-7\">\r\n <i class=\"fas fa-cog\"></i>\r\n </button>\r\n @if (showPopoverFilter()) {\r\n <div class=\"popover-menu-filter shadow\" @dropdownAnimation>\r\n <div class=\"popover-title fs-7\">Filtros</div>\r\n <div class=\"form-check form-switch text-start\">\r\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"true\" (change)=\"toggleFiltros($event)\">\r\n <label class=\"form-check-label\">Todos</label>\r\n </div>\r\n @for (col of columns(); track col.caption) {\r\n <div class=\"form-check form-switch text-start\">\r\n <input type=\"checkbox\" class=\"form-check-input\" id=\"{{ 'filter_' + col.caption }}\"\r\n [(ngModel)]=\"filtrarColumnas()[col.fieldname]\" />\r\n <label class=\"form-check-label\" for=\"{{ 'filter_' + col.caption }}\">\r\n {{ col.caption }}\r\n </label>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n}\r\n\r\n<!-- VISTA MOBILE -->\r\n\r\n@if (isLoadingResponsive()) {\r\n<div class=\"d-flex flex-column justify-content-center align-items-center py-2\">\r\n <div class=\"spinner-border text-secondary mb-2\" role=\"status\"></div>\r\n <span class=\"ms-2 fs-6\">Cargando...</span>\r\n</div>\r\n}\r\n\r\n@if (!isLoadingResponsive()) {\r\n\r\n@if (isMobile()) {\r\n<app-card-mobile [data]=\"rowFilter()\" [columns]=\"columns()\" [actions]=\"customActions()\" [identifier]=\"identifier()\"\r\n [titleTabla]=\"titleTabla()\" [altoContainer]=\"altoContainer()\" />\r\n}\r\n\r\n@if (!isMobile()) {\r\n\r\n<div class=\"table-container table-responsive\"\r\n [style.height]=\"withHeight() && altoContenedor() ? 'calc(100vh - ' + altoContenedor() + 'px)' : ''\"\r\n [style.max-height]=\"altoContenedor()? 'calc(100vh - ' + altoContenedor() + 'px)' : ''\">\r\n <div>\r\n <table #table class=\"table table-striped normal-table\" [ngClass]=\"isDarkMode() ? 'table-dark' : ''\">\r\n <thead>\r\n <tr class=\"shadow-sm\">\r\n @if (withDetails()) {\r\n <th class=\"cw-20 b-table\" [ngClass]=\"colorHeader()== 'normal' ? 'h-table' : ''\"></th>\r\n }\r\n\r\n @if (withCheckbox()) {\r\n <th class=\"cw-20 b-table\" [ngClass]=\"colorHeader()== 'normal' ? 'h-table' : ''\">\r\n <input type=\"checkbox\" class=\"form-check-input fs-8 border border-secondary\"\r\n [checked]=\"validaAllCheck()\" (change)=\"allCheck($event)\">\r\n </th>\r\n }\r\n\r\n @if (customActions()) {\r\n <th class=\"cw-40 b-table\" [ngClass]=\"colorHeader()== 'normal' ? 'h-table' : ''\">\r\n\r\n <app-dropdown-cdk>\r\n <ng-template #trigger>\r\n <button class=\"btn p-0 text-dark d-flex mx-auto border-0\">\r\n <i class=\"fas fa-cog\"></i>\r\n </button>\r\n </ng-template>\r\n <ng-template #content>\r\n <div class=\"popover-menu-column bg-white shadow\" @dropdownAnimation>\r\n <div class=\"popover-title fs-7 bg-white\">Columnas</div>\r\n @for (col of columns(); track col.caption) {\r\n @if (col.caption) {\r\n <div class=\"form-check form-switch text-start\">\r\n <input type=\"checkbox\" class=\"form-check-input py-0 my-0 cw-25 ch-15\"\r\n id=\"{{'switch_' + col.caption}}\"\r\n [(ngModel)]=\"visibilidadColumn()[col.caption]\" />\r\n <label class=\"form-check-label ps-1 fs-6 cursor-pointer font-label\"\r\n for=\"{{'switch_' + col.caption}}\">{{ col.caption }}</label>\r\n </div>\r\n }\r\n }\r\n </div>\r\n </ng-template>\r\n </app-dropdown-cdk>\r\n </th>\r\n }\r\n @for (column of columns(); track $index) {\r\n @if (validaVisibilidad(column.visible) && visibilidadColumn()[column.caption] !== false) {\r\n <th class=\"b-table\" #thElement [title]=\"column.caption\"\r\n [ngClass]=\"colorHeader()== 'normal' ? 'h-table' : ''\">\r\n {{ column.caption }}\r\n @if(column.caption){\r\n @if (sortColumn == column.fieldname) {\r\n <span (click)=\"sortTable(column.fieldname)\" class=\"cursor-pointer\">\r\n <i [ngClass]=\"sortDirection == 'asc' ? 'fas fa-angle-up fs-6':'fas fa-angle-down fs-6'\"></i>\r\n </span>\r\n }\r\n @if (sortColumn !== column.fieldname) {\r\n <i class=\"fas fa-sort icon-sort cursor-pointer\" (click)=\"sortTable(column.fieldname)\"></i>\r\n }\r\n }\r\n </th>\r\n }\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (row of dataVirtual(); track row.id) {\r\n <tr [ngClass]=\"{'table-active': (identifier().length < 1 ? selectedRow() == $index : selectedRow() == concatenarValue(row,identifier())), \r\n 'grilla-error': getSituacionNumberFromColumns(row, columns()) == 9}\"\r\n (click)=\"selectRow(identifier().length < 1 ? $index : row)\"\r\n [id]=\"identifier().length < 1 ? ('row_table_' + $index) : ('row_table_'+ concatenarValue(row,identifier()))\">\r\n @if (withDetails()) {\r\n <td class=\"b-table text-center mwp-25\">\r\n <a (click)=\"toggleExpandRow($index)\" class=\"text-dark cursor-pointer fs-6\">\r\n <i class=\"fa-solid\" [class.fa-chevron-right]=\"expandedRows != $index\"\r\n [class.fa-chevron-down]=\"expandedRows == $index\"></i>\r\n </a>\r\n </td>\r\n }\r\n\r\n @if (withCheckbox()) {\r\n <td scope=\"col\" class=\"text-center b-table\">\r\n <input type=\"checkbox\" class=\"form-check-input fs-8 border border-secondary my-0 py-0\"\r\n [checked]=\"isItemSelected($index)\" (change)=\"toogleItem($index, $event)\">\r\n </td>\r\n }\r\n\r\n @if (customActions()) {\r\n <td class=\"text-center mwp-90 b-table\">\r\n <ng-container *ngTemplateOutlet=\"customActions(); context: { $implicit: row }\"></ng-container>\r\n </td>\r\n }\r\n @for (column of columns(); track $index) {\r\n @if (validaVisibilidad(column.visible) && visibilidadColumn()[column.caption] !== false) {\r\n @switch (column.tipo) {\r\n @case ('cell-render') {\r\n @let resolverItem = resolveCell(column.fieldname, row);\r\n @if (resolverItem) {\r\n <td class=\"b-table\" [title]=\"resolverItem.text\" [class.text-center]=\"resolverItem.icon\">\r\n @if (resolverItem.icon) {\r\n <i class=\"fs-5\" [ngClass]=\"resolverItem.icon\"></i>\r\n } @else if (resolverItem.class) {\r\n <span [ngClass]=\"row.situac == 'J' ? 'text-error' : resolverItem.class\">\r\n {{ resolverItem.text }}\r\n </span>\r\n } @else {\r\n {{ resolverItem.text }}\r\n }\r\n </td>\r\n }\r\n }\r\n\r\n @default {\r\n <td [innerHTML]=\"getHighlight(row._format?.[column.fieldname] ?? row[column.fieldname], column.fieldname)\"\r\n [title]=\"row._format?.[column.fieldname] ?? row[column.fieldname]\" [ngClass]=\"getRowClass(row)\"\r\n class=\"b-table {{getPosition(column)}}\">\r\n </td>\r\n }\r\n }\r\n }\r\n }\r\n </tr>\r\n @if ($index == expandedRows) {\r\n <tr @fadeInOut>\r\n <td [attr.colspan]=\"columns().length + (withDetails()? 1 : 0) + (customActions() ? 1 : 0) + (withCheckbox() ? 1 : 0)\"\r\n class=\"table-blank\">\r\n <div class=\"d-flex flex-column auditoria\">\r\n <span class=\"fw-bold fs-7 text-dark\">Datos de auditoría</span>\r\n <span class=\"fs-6 text-dark fw-bold\">\r\n Creación: {{ row.nomucreac }} el {{ row.fcreac }} a las {{\r\n row.hcreac }}\r\n </span>\r\n <span class=\"fs-6 text-dark fw-bold\">\r\n Actualización: {{ row.nomuactua }} el {{ row.factua }} a las {{\r\n row.hactua }}\r\n </span>\r\n </div>\r\n </td>\r\n </tr>\r\n }\r\n }\r\n <tr #anchor>\r\n <td [attr.colspan]=\"columns().length + (withDetails()? 1 : 0) + (customActions() ? 1 : 0) + (withCheckbox() ? 1 : 0)\" class=\"text-center text-muted py-3\">\r\n @if (isLoading()) {\r\n <span>Cargando más registros...</span>\r\n }\r\n @if (!isLoading() && dataVirtual().length >= 5000) {\r\n <span>No hay más registros</span>\r\n }\r\n </td>\r\n </tr>\r\n </tbody>\r\n\r\n @if (withTotal()) {\r\n <tfoot>\r\n <tr>\r\n <td class=\"b-table\" [attr.colspan]=\"getColspanBeforeTotals()\">Totales:</td>\r\n @for (col of columns() ; track $index) {\r\n @if (col.totalizable) {\r\n <td class=\"b-table text-end\">\r\n {{ getTotals(col.fieldname)}}\r\n </td>\r\n }\r\n }\r\n </tr>\r\n </tfoot>\r\n }\r\n </table>\r\n </div>\r\n</div>\r\n\r\n}\r\n\r\n}\r\n\r\n\r\n<!-- FIN VISTA MOBILE -->","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, HostListener, input, output, QueryList, signal, ViewChildren } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { dropdownAnimation } from '../../../directivas/animaciones/fade-animation';\r\n\r\n@Component({\r\n selector: 'app-table-busqueda',\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './table-busqueda.component.html',\r\n styleUrl: './table-busqueda.component.scss',\r\n animations: [dropdownAnimation]\r\n})\r\nexport class TableBusquedaComponent {\r\n @ViewChildren('fila') filas!: QueryList<ElementRef>\r\n @ViewChildren('thElement') tableHeaders!: QueryList<ElementRef>\r\n\r\n rows = input<any[]>([])\r\n columns = input<any[]>([])\r\n withFiltro = input<boolean>(false)\r\n mode = input<string>('normal')\r\n altoContainer = input<number>()\r\n\r\n emitirBusqueda = output<string>()\r\n emitirCheck = output<any>()\r\n emitirSelected = output<any>()\r\n\r\n colorHeader = input<'normal' | 'light'>('normal')\r\n\r\n busqueda: string = ''\r\n resizingColumn: HTMLElement | null = null\r\n startX: number = 0\r\n startWidth: number = 0\r\n\r\n selectedRow = 0\r\n\r\n sortColumn: string | null = null\r\n sortDirection: 'asc' | 'desc' = 'asc'\r\n\r\n situacDaClave: Record<string, string> = {\r\n 'A': '',\r\n 'B': 'text-exito',\r\n 'J': 'text-error'\r\n }\r\n situacDaStringClave: Record<string, string> = {\r\n 'En Espera': '',\r\n 'Aprobado': 'text-exito',\r\n 'Desaprobado': 'text-error'\r\n }\r\n\r\n situacDaRendicion: Record<string, string> = {\r\n 'A': 'EN ESPERA',\r\n 'S': 'APROBADO',\r\n 'N': 'DESAPROBADO'\r\n }\r\n\r\n situacDaClaveRendicion: Record<string, string> = {\r\n 'A': 'text-alerta',\r\n 'S': 'text-exito',\r\n 'N': 'text-error'\r\n }\r\n\r\n situacTesoreria: Record<number, string> = {\r\n 0: 'Libre',\r\n 1: 'Proceso',\r\n 2: 'Contabilizado',\r\n 9: 'Anulado'\r\n }\r\n\r\n checkString = {\r\n 'S': 'Activo',\r\n 'N': 'Inactivo'\r\n }\r\n\r\n showPopover = signal<boolean>(false)\r\n\r\n\r\n selectRow(index: number) {\r\n this.selectedRow = index\r\n }\r\n\r\n onResizeStart(event: MouseEvent, thElement: HTMLElement) {\r\n this.resizingColumn = thElement\r\n this.startX = event.pageX\r\n this.startWidth = thElement.offsetWidth\r\n\r\n document.addEventListener('mousemove', this.onResizing)\r\n document.addEventListener('mouseup', this.onResizeEnd)\r\n }\r\n\r\n onResizing = (event: MouseEvent) => {\r\n if (!this.resizingColumn) return\r\n\r\n const newWidth = this.startWidth + (event.pageX - this.startX)\r\n this.resizingColumn.style.width = `${newWidth}px`\r\n };\r\n\r\n onResizeEnd = () => {\r\n this.resizingColumn = null;\r\n document.removeEventListener('mousemove', this.onResizing)\r\n document.removeEventListener('mouseup', this.onResizeEnd)\r\n }\r\n\r\n sortTable(column: string) {\r\n if (this.sortColumn == column) {\r\n this.sortDirection = this.sortDirection == 'asc' ? 'desc' : 'asc'\r\n } else {\r\n this.sortColumn = column\r\n this.sortDirection = 'asc'\r\n }\r\n\r\n this.rows().sort((a, b) => {\r\n const valueA = a[column] ?? ''\r\n const valueB = b[column] ?? ''\r\n\r\n if (typeof valueA == 'number' && typeof valueB == 'number') {\r\n return this.sortDirection == 'asc' ? valueA - valueB : valueB - valueA\r\n } else {\r\n return this.sortDirection == 'asc'\r\n ? valueA.toString().localeCompare(valueB.toString())\r\n : valueB.toString().localeCompare(valueA.toString())\r\n }\r\n })\r\n }\r\n\r\n textoDigitado(event: Event) {\r\n const value = (event.target as HTMLInputElement).value\r\n this.busqueda = value\r\n this.emitirBusqueda.emit(value)\r\n }\r\n\r\n getHighlight(text: any): string {\r\n if (text == null) {\r\n text = ''\r\n }\r\n if (!this.busqueda) return text\r\n if (typeof text !== 'string') {\r\n text = text.toString()\r\n }\r\n const regex = new RegExp(`(${this.busqueda})`, 'gi')\r\n return text?.replace(regex, '<mark>$1</mark>')\r\n }\r\n\r\n desglozarValor = (valor: string) => {\r\n return valor!.split(',')\r\n }\r\n\r\n getSituacionNumberFromColumns(row: any, columns: any[]): number {\r\n const situacionColumn = columns.find(col => col.type == 'situacion_number')\r\n if (situacionColumn) {\r\n return row[situacionColumn.prop] || 0\r\n }\r\n return 0\r\n }\r\n\r\n clicCheck(item: string, event: Event, row: any) {\r\n const check = event.target as HTMLInputElement\r\n const resultCierre = check.checked ? 1 : 0\r\n const mes = item.at(-1)\r\n const formatObj = { ...row, cierre: resultCierre, mes }\r\n this.emitirCheck.emit(formatObj)\r\n }\r\n\r\n\r\n @HostListener('window:keydown', ['$event'])\r\n manejarTeclado(event: KeyboardEvent) {\r\n const numFilas = this.rows().length\r\n\r\n if (numFilas == 0) {\r\n return\r\n }\r\n\r\n if (event.key == 'ArrowDown') {\r\n this.selectedRow = (this.selectedRow + 1) % numFilas\r\n this.scrollToFila()\r\n } else if (event.key == 'ArrowUp') {\r\n this.selectedRow = (this.selectedRow - 1 + numFilas) % numFilas\r\n this.scrollToFila()\r\n } else if (event.key == 'Enter') {\r\n event.preventDefault();\r\n this.enviarDataClick(this.rows()[this.selectedRow])\r\n }\r\n\r\n }\r\n\r\n scrollToFila() {\r\n const filaElement = this.filas.toArray()[this.selectedRow]?.nativeElement\r\n if (filaElement) {\r\n filaElement.scrollIntoView({ behavior: 'smooth', block: 'center' })\r\n }\r\n }\r\n\r\n enviarDataClick(obj: any) {\r\n this.emitirSelected.emit(obj)\r\n }\r\n\r\n tooglePopover() {\r\n this.showPopover.update(status => !status)\r\n }\r\n}\r\n","@if (withFiltro()) {\r\n <div class=\"col-12 mb-2 mt-2 d-flex flex-wrap justify-content-end align-items-center\">\r\n <label for=\"text_busqueda_modal\" class=\"form-label me-2 pt-2\">Buscar:</label>\r\n <input type=\"text\" id=\"text_busqueda_modal\" class=\"form-control cw-250 ch-25\" (input)=\"textoDigitado($event)\">\r\n </div>\r\n}\r\n\r\n<div class=\"table-container\" [ngClass]=\"mode() == 'normal' ? 'table-responsive' : ''\" [style.max-height]=\"altoContainer()? 'calc(100vh - ' + altoContainer() + 'px)' : ''\">\r\n<table #table class=\"table table-striped\" [ngClass]=\"mode() == 'normal' ? 'normal-table' : 'flex-table'\">\r\n <thead>\r\n <tr class=\"shadow-sm\">\r\n @for (column of columns(); track $index) {\r\n @if (column.type !== 'mostrar' || column.condition()) {\r\n <th #thElement [title]=\"column.name\" [ngClass]=\"colorHeader()== 'normal' ? 'header-normal' : ''\">\r\n {{ column.name }}\r\n @if (sortColumn == column.prop) {\r\n <span (click)=\"sortTable(column.prop)\" class=\"cursor-pointer\">\r\n <i [ngClass]=\"sortDirection == 'asc' ? 'fas fa-angle-up fs-6':'fas fa-angle-down fs-6'\"></i>\r\n </span>\r\n }\r\n \r\n @if (sortColumn !== column.prop) {\r\n <i class=\"fas fa-sort icon-sort cursor-pointer\" (click)=\"sortTable(column.prop)\"></i>\r\n }\r\n @if (mode() == 'flex' && $index + 1 != columns().length) {\r\n <span class=\"resize-handle\" (mousedown)=\"onResizeStart($event, thElement)\"></span>\r\n }\r\n </th>\r\n }\r\n }\r\n \r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n\r\n @for (row of rows(); track $index) {\r\n <tr [ngClass]=\"{'table-active': selectedRow == $index, 'grilla-error': getSituacionNumberFromColumns(row, columns()) == 9}\" #fila (click)=\"enviarDataClick(row)\">\r\n\r\n @for (column of columns(); track $index) {\r\n\r\n @if (column.type !== 'mostrar' || column.condition()) {\r\n @switch (column.type) {\r\n @case ('fecha') {\r\n <td [innerHTML]=\"getHighlight(row[column.prop] | date:'dd/MM/yyyy')\" [title]=\"row[column.prop] | date:'dd/MM/yyyy'\" [ngClass]=\"row.situac == 'J' ? 'text-error':''\">\r\n </td>\r\n \r\n }\r\n\r\n @case ('status') {\r\n <td [innerHTML]=\"getHighlight(row[column.prop])\" [title]=\"row[column.prop]\" [ngClass]=\"row.situac == 'J' ? 'text-error': situacDaClave[row.situacda]\">\r\n </td>\r\n \r\n }\r\n @case ('situacion') {\r\n <td [innerHTML]=\"getHighlight(row[column.prop])\" [title]=\"row[column.prop]\" [ngClass]=\"row.situac == 'J' ? 'text-error':''\">\r\n \r\n </td>\r\n \r\n }\r\n @case ('situacion_number') {\r\n <td [innerHTML]=\"getHighlight(situacTesoreria[row[column.prop]])\" [title]=\"situacTesoreria[row[column.prop]]\" [ngClass]=\"row[column.prop] == 9 ? 'text-error':''\">\r\n \r\n </td>\r\n \r\n }\r\n @case ('situacion_string') {\r\n <td [innerHTML]=\"getHighlight(row[column.prop])\" [title]=\"row[column.prop]\" [ngClass]=\"row.situac == 'J' ? 'text-error': situacDaStringClave[row[column.prop]]\">\r\n \r\n </td>\r\n \r\n }\r\n\r\n @case ('situacion_rendicion') {\r\n <td [innerHTML]=\"getHighlight(situacDaRendicion[row[column.prop]])\" [title]=\"situacDaRendicion[row[column.prop]]\" [ngClass]=\"row.situac == 'J' ? 'text-error': situacDaClaveRendicion[row[column.prop]]\">\r\n \r\n </td>\r\n \r\n }\r\n\r\n @case ('decimal') {\r\n <td class=\"text-end\"\r\n [innerHTML]=\"getHighlight((row[column.prop] ?? 0) | number:(column.pipe ?? '1.2-2'))\"\r\n [title]=\"(row[column.prop] ?? 0) | number:(column.pipe ?? '1.2-2')\"\r\n [ngClass]=\"row.situac == 'J' ? 'text-error':''\">\r\n </td>\r\n }\r\n\r\n @case ('text-center') {\r\n <td class=\"text-center\" [innerHTML]=\"getHighlight(row[column.prop])\" [title]=\"row[column.prop]\" [ngClass]=\"row.situac == 'J' ? 'text-error':''\">\r\n </td>\r\n }\r\n\r\n @case ('check') {\r\n <td class=\"text-center\" [title]=\"checkString[row[column.prop]]\" >\r\n <i class=\"fs-5\" [ngClass]=\"row[column.prop] == 'S'?'fas fa-check yes-icon':'fas fa-times no-icon'\"></i>\r\n </td>\r\n }\r\n\r\n @case ('check-input') {\r\n <td class=\"text-center\" >\r\n <input type=\"checkbox\" class=\"form-check-input fs-8\" [checked]=\"row[column.prop] == 1\" (change)=\"column.event ? clicCheck(column.prop,$event,row) : null\">\r\n </td>\r\n }\r\n\r\n @case ('mostrar') {\r\n @if (column.condition()) {\r\n <td [innerHTML]=\"getHighlight(row[column.prop])\" [title]=\"row[column.prop]\">\r\n </td> \r\n }\r\n }\r\n\r\n @default {\r\n <td [innerHTML]=\"getHighlight(row[column.prop])\" [title]=\"row[column.prop]\" [ngClass]=\"row.situac == 'J' ? 'text-error':''\">\r\n \r\n </td>\r\n \r\n }\r\n }\r\n }\r\n <!-- <td>{{ row[column.prop] }}</td> -->\r\n }\r\n \r\n </tr>\r\n }\r\n\r\n \r\n </tbody>\r\n </table>\r\n</div>","import { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\r\nimport { Component, computed, ContentChild, inject, input, linkedSignal, model, output, signal, TemplateRef } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ButtonComponent } from '../../forms/button/button.component';\r\nimport { DecimalDirective } from '../../../directivas/inputs/decimal.directive';\r\nimport { OnlyNumberDirective } from '../../../directivas/inputs/only-number.directive';\r\nimport { CellRender, CellRendered } from '../../../models/cell-rendered';\r\nimport { cleanNumber } from '../../../directivas/utils/general/funciones';\r\n\r\n@Component({\r\n selector: 'app-table-detalle',\r\n imports: [FormsModule, CommonModule, DecimalDirective, OnlyNumberDirective, NgbDropdownModule, ButtonComponent],\r\n templateUrl: './table-detalle.component.html',\r\n styleUrl: './table-detalle.component.scss',\r\n providers: [DatePipe, DecimalPipe]\r\n})\r\nexport class TableDetalleComponent {\r\n\r\n private datePipe = inject(DatePipe)\r\n private decimalPipe = inject(DecimalPipe)\r\n\r\n selectedRow = model<any>(null)\r\n identifier = input<string[]>([])\r\n altoContainer = input<number>()\r\n withFiltro = input<boolean>(false)\r\n busqueda = model<string>('')\r\n rows = input<any[]>([])\r\n columns = input<any[]>([])\r\n lastItemDisabled = input<boolean>(true)\r\n position = input<'block' | 'flex'>('flex')\r\n withCheckbox = input<boolean>(true)\r\n withEditItem = input<boolean>(false)\r\n\r\n colorHeader = input<'normal' | 'light'>('normal')\r\n\r\n @ContentChild('customActions', { static: false }) customActions!: TemplateRef<any>\r\n\r\n valueTemporal: any\r\n\r\n deleteItems = model<number[]>([])\r\n selectItems = model<any[]>([])\r\n\r\n isDarkMode = input<boolean>(false)\r\n selectedRadio = model<number | null>(null);\r\n\r\n editItem = output<any>()\r\n\r\n rendered = input<CellRendered[]>([])\r\n\r\n concatenarValue(obj: any, value: string[]) {\r\n let result = ''\r\n value.forEach(el => {\r\n result += obj[el]\r\n })\r\n return result\r\n }\r\n\r\n selectRow(index: any) {\r\n if (this.identifier().length < 1) {\r\n return this.selectedRow.set(index)\r\n }\r\n this.selectedRow.set(this.concatenarValue(index, this.identifier()))\r\n }\r\n\r\n getSituacionNumberFromColumns(row: any, columns: any[]): number {\r\n const situacionColumn = columns.find(col => col.type == 'situacion_number');\r\n if (situacionColumn) {\r\n return row[situacionColumn.prop] || 0;\r\n }\r\n return 0\r\n }\r\n\r\n focusData(data: any) {\r\n this.valueTemporal = data\r\n }\r\n\r\n validarData(value: any) {\r\n if (this.valueTemporal == value) {\r\n return false\r\n }\r\n this.valueTemporal = null\r\n return true\r\n }\r\n\r\n // useSelectionMode() {\r\n // return this.selectItems() != undefined\r\n // }\r\n\r\n toogleItem(index: number, event: Event) {\r\n const input = event.target as HTMLInputElement\r\n if (input.checked) {\r\n this.deleteItems.update(de => [...(de || []), index])\r\n } else {\r\n this.deleteItems.update(de => (de || []).filter(d => d != index))\r\n }\r\n\r\n\r\n // if (this.useSelectionMode()) {\r\n // if (input.checked) {\r\n // this.selectItems.update(items => [...(items || []), row])\r\n // } else {\r\n // this.selectItems.update(items => (items || []).filter(item =>\r\n // this.identifier().length > 0\r\n // ? this.concatenarValue(item, this.identifier()) != this.concatenarValue(row, this.identifier())\r\n // : item != row\r\n // ))\r\n // }\r\n // } else {\r\n // if (input.checked) {\r\n // this.deleteItems.update(de => [...(de || []), index])\r\n // } else {\r\n // this.deleteItems.update(de => (de || []).filter(d => d != index))\r\n // }\r\n // }\r\n }\r\n\r\n allCheck(event: Event) {\r\n const input = event.target as HTMLInputElement\r\n\r\n if (input.checked) {\r\n const total = this.rows().length\r\n if (this.lastItemDisabled()) {\r\n this.deleteItems.set(Array.from({ length: total - 1 }, (_, i) => i))\r\n } else {\r\n this.deleteItems.set(Array.from({ length: total }, (_, i) => i))\r\n }\r\n } else {\r\n this.deleteItems.set([])\r\n }\r\n\r\n // if (!this.useSelectionMode()) {\r\n // if (input.checked) {\r\n // const total = this.rows().length\r\n // if (this.lastItemDisabled()) {\r\n // this.deleteItems.set(Array.from({ length: total - 1 }, (_, i) => i))\r\n // } else {\r\n // this.deleteItems.set(Array.from({ length: total }, (_, i) => i))\r\n // }\r\n // } else {\r\n // this.deleteItems.set([])\r\n // }\r\n // }\r\n // else {\r\n // if (input.checked) {\r\n // let itemsToSelect = [...this.rows()]\r\n // if (this.lastItemDisabled()) {\r\n // itemsToSelect = itemsToSelect.slice(0, -1)\r\n // }\r\n // this.selectItems.set(itemsToSelect)\r\n // } else {\r\n // this.selectItems.set([])\r\n // }\r\n // }\r\n }\r\n\r\n validaAllCheck() {\r\n const total = this.rows().length\r\n if (this.lastItemDisabled() && total > 1) return this.deleteItems().length == (total - 1)\r\n if (this.lastItemDisabled() && total <= 1) return false\r\n return this.deleteItems().length == total\r\n // if (!this.useSelectionMode()) {\r\n // const total = this.rows().length\r\n // if (this.lastItemDisabled() && total > 1) return this.deleteItems().length == (total - 1)\r\n // if (this.lastItemDisabled() && total <= 1) return false\r\n // return this.deleteItems().length == total\r\n // }\r\n // else {\r\n // const totalItems = this.lastItemDisabled()\r\n // ? this.rows().length - 1\r\n // : this.rows().length\r\n // return this.selectItems().length === totalItems && totalItems > 0\r\n // }\r\n }\r\n\r\n isItemSelected(index: number): boolean {\r\n return this.deleteItems().includes(index)\r\n // if (!this.useSelectionMode()) {\r\n // return this.deleteItems().includes(index)\r\n // }\r\n // else {\r\n // const row = this.rows()[index]\r\n // return this.selectItems().some(item =>\r\n // this.identifier().length > 0\r\n // ? this.concatenarValue(item, this.identifier()) === this.concatenarValue(row, this.identifier())\r\n // : item === row\r\n // )\r\n // }\r\n }\r\n\r\n clickRadio(index: number) {\r\n if (this.lastItemDisabled() && this.validaLastRegistro(index)) {\r\n return\r\n }\r\n\r\n this.selectedRadio.set(index)\r\n }\r\n\r\n validaLastRegistro = (index: number) => {\r\n const registros = (this.rows() ?? []).length\r\n return registros == index + 1\r\n }\r\n\r\n limpiarNumero(numero: any) {\r\n if (typeof numero == 'string') return cleanNumber(numero)\r\n if (!numero) return 0\r\n return numero\r\n }\r\n\r\n widthDefault = (column: any) => {\r\n if ((column.tipo == 'input' || column.tipo == 'input-number' || column.tipo == 'input-decimal') && column.width < 100) {\r\n return 100\r\n }\r\n return column.width\r\n }\r\n\r\n manejarDataEtiqueta(data: any, row: any) {\r\n row.etiqueta = data.ETIQUETA\r\n row.fvenci = data.FVENCI\r\n row.ancho = data.ANCHO\r\n row.lote = data.LOTE\r\n row.acabado = data.ACABADO\r\n row.nrocarrete = data.NROCARRETE\r\n row.chasis = data.CHASIS\r\n row.motor = data.MOTOR\r\n row.opnumdoc = data.OPNUMDOC\r\n }\r\n\r\n limpiarEtiqueta(event: boolean, row: any) {\r\n if (!event) {\r\n row = { ...row, etiqueta: '', fvenci: '', ancho: null, lote: '', acabado: '', nrocarrete: '', chasis: '', motor: '', opnumdoc: '' }\r\n }\r\n }\r\n\r\n generateKeyDisabled = (item: any, column: any) => {\r\n const generate = `disabled${column.fieldname}`\r\n return item[generate] ?? false\r\n }\r\n\r\n validaAccionDescri = (index: number) => {\r\n const rows = (this.rows() ?? []).length - 1\r\n return this.lastItemDisabled() && index == rows\r\n }\r\n\r\n validarFunction = (value: any) => {\r\n if (typeof value === 'function') return value\r\n return null;\r\n }\r\n\r\n validaEdit(positi: number) {\r\n if (this.lastItemDisabled() && this.validaLastRegistro(positi)) return false\r\n return true\r\n }\r\n\r\n disabledColumn = (row: any, column: any) => {\r\n if (row.disabledAll) return true;\r\n if (column.disabled) return true;\r\n return false\r\n }\r\n\r\n resolveCell(col: string, row: any): CellRender {\r\n const value = row[col]\r\n const r = this.rendered().find(r => r.matches(col, value, row))\r\n return r ? r.render(value, row) : null\r\n }\r\n\r\n getRowClass(row: any): string {\r\n const match = this.rendered()?.find(r => r.matches('*', null, row))\r\n return match ? match.render(null, row)?.class || '' : ''\r\n }\r\n\r\n rowFilter = computed(() => {\r\n const term = this.busqueda().toLowerCase()\r\n const currentRows = this.rows?.() || []\r\n return currentRows.filter(item => this.filtraItem(item, term))\r\n })\r\n\r\n getTipoCampo(fieldname: string): string {\r\n const columna = this.columns().find(col => col.fieldname == fieldname)\r\n return columna?.tipo ?? 'string'\r\n }\r\n\r\n private filtraItem(item: any, term: string): boolean {\r\n const columnasActivas = Object.entries(this.filtrarColumnas())\r\n .filter(([_campo, activo]) => activo)\r\n\r\n return columnasActivas.some(([campo]) => {\r\n let valor = item[campo]\r\n const tipo = this.getTipoCampo(campo)\r\n\r\n switch (tipo) {\r\n case 'fecha':\r\n valor = this.datePipe.transform(valor, 'dd/MM/yyyy') ?? ''\r\n break\r\n case 'decimal':\r\n valor = this.decimalPipe.transform(valor, '1.2-2') ?? ''\r\n break\r\n case 'check':\r\n valor = valor ? 'Sí' : 'No'\r\n break\r\n default:\r\n valor = (valor ?? '').toString()\r\n }\r\n\r\n return valor.toLowerCase().includes(term)\r\n })\r\n }\r\n\r\n filtrarColumnas = linkedSignal(() => {\r\n const columns = this.columns()\r\n const filtro: { [caption: string]: boolean } = {}\r\n columns.forEach((col) => {\r\n if (col.fieldname) {\r\n filtro[col.fieldname] = true\r\n }\r\n })\r\n return filtro\r\n })\r\n\r\n textoDigitado(event: Event) {\r\n const value = (event.target as HTMLInputElement).value\r\n this.busqueda.set(value)\r\n }\r\n\r\n getHighlight(text: any): string {\r\n if (text == null) {\r\n text = ''\r\n }\r\n if (!this.busqueda()) return text\r\n if (typeof text !== 'string') {\r\n text = text.toString()\r\n }\r\n const regex = new RegExp(`(${this.busqueda()})`, 'gi')\r\n return text?.replace(regex, '<mark>$1</mark>')\r\n }\r\n}\r\n","@if (withFiltro()) {\r\n<div class=\"col-12 mb-2 mt-2 d-flex justify-content-end align-items-center\">\r\n <label for=\"\" class=\"form-label me-2 pt-2\">Buscar</label>\r\n <input type=\"text\" class=\"form-control cw-250\" (input)=\"textoDigitado($event)\">\r\n</div>\r\n}\r\n<div class=\"table-container table-responsive\"\r\n [style.max-height]=\"altoContainer() ? 'calc(100vh - ' + altoContainer() + 'px)' : ''\"\r\n [style.max-height]=\"altoContainer()? 'calc(100vh - ' + altoContainer() + 'px)' : ''\">\r\n <table #table class=\"table table-striped normal-table\" [ngClass]=\"isDarkMode() ? 'table-dark' : ''\">\r\n <thead>\r\n <tr class=\"shadow-sm\">\r\n @if (withCheckbox()) {\r\n <th scope=\"col\" class=\"text-center b-table w-min\"\r\n [ngClass]=\"colorHeader()== 'normal' ? '' : 'header-normal'\">\r\n <input type=\"checkbox\" class=\"form-check-input fs-8 border border-secondary\"\r\n [checked]=\"validaAllCheck()\" (change)=\"allCheck($event)\">\r\n </th>\r\n }\r\n\r\n @if (withEditItem()) {\r\n <th scope=\"col\" class=\"text-center b-table w-min\"\r\n [ngClass]=\"colorHeader()== 'normal' ? '' : 'header-normal'\">\r\n </th>\r\n }\r\n\r\n @if (customActions) {\r\n <th scope=\"col\" class=\"b-table w-min mwp-50\"\r\n [ngClass]=\"colorHeader()== 'normal' ? '' : 'header-normal'\"></th>\r\n }\r\n\r\n @for (column of columns(); track $index) {\r\n @if (column.visible) {\r\n <th scope=\"col\" class=\"b-table\" #thElement [title]=\"column.caption\"\r\n [style.width]=\"widthDefault(column) + 'px'\" [style.min-width]=\"widthDefault(column) + 'px'\"\r\n [ngClass]=\"colorHeader()== 'normal' ? '' : 'header-normal'\">\r\n {{ column.caption }}\r\n </th>\r\n }\r\n }\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n @for (row of rowFilter(); track iRow; let iRow = $index) {\r\n @let isLast = validaAccionDescri(iRow);\r\n @let rowClass = getRowClass(row);\r\n <tr [ngClass]=\"{'table-active': (identifier().length < 1 ? selectedRow() == $index : selectedRow() == concatenarValue(row,identifier()))}\"\r\n [class]=\"rowClass\" (click)=\"selectRow(identifier().length < 1 ? $index : row)\"\r\n [id]=\"identifier().length < 1 ? ('row_table_' + $index) : ('row_table_'+ concatenarValue(row,identifier()))\">\r\n\r\n @if (withCheckbox()) {\r\n <td scope=\"col\" class=\"text-center b-table w-min\" [class]=\"rowClass\">\r\n @if(!resolveCell('checkbox', row)?.hidden){\r\n <input type=\"checkbox\" class=\"form-check-input fs-8 border border-secondary my-0 py-0\"\r\n [disabled]=\"!lastItemDisabled() ? false : validaLastRegistro($index)\"\r\n [checked]=\"isItemSelected($index)\" (change)=\"toogleItem($index, $event)\">\r\n }\r\n </td>\r\n }\r\n\r\n @if (withEditItem()) {\r\n <td scope=\"col\" class=\"text-start b-table w-min\">\r\n <div class=\"d-flex align-items-center justify-content-center\">\r\n <i (click)=\"validaEdit(iRow) ? editItem.emit(row) : null \"\r\n class=\"fas fa-pen fs-7 px-2 py-2 my-1 rounded-2 text-secondary shadow-sm\"\r\n [ngClass]=\"validaEdit(iRow) ? 'cursor-pointer' : ''\" title=\"Editar articulo\"></i>\r\n </div>\r\n </td>\r\n }\r\n\r\n @if (customActions) {\r\n <td class=\"text-center mwp-90 b-table w-min\">\r\n <div class=\"d-flex justify-content-center align-items-center\">\r\n <ng-container *ngTemplateOutlet=\"customActions; context: { $implicit: row }\"></ng-container>\r\n </div>\r\n </td>\r\n }\r\n\r\n @for (column of columns(); track $index) {\r\n @if (column.visible) {\r\n @switch (column.tipo) {\r\n\r\n @case ('input-radio') {\r\n <td scope=\"col\" class=\"text-center b-table\">\r\n <input type=\"radio\" class=\"form-check-input fs-8 border border-secondary m-0 p-0\"\r\n [disabled]=\"lastItemDisabled() && validaLastRegistro(iRow)\" [checked]=\"selectedRadio() === iRow\"\r\n (change)=\"clickRadio(iRow)\">\r\n </td>\r\n }\r\n\r\n @case ('fecha') {\r\n <td class=\"b-table\" [title]=\"row[column.fieldname] | date:'dd/MM/yyyy'\"\r\n [ngClass]=\"row.situac == 'J' ? 'text-error':''\">\r\n {{ row[column.fieldname] | date:'dd/MM/yyyy' }}\r\n </td>\r\n }\r\n\r\n @case ('decimal') {\r\n <td class=\"text-end b-table\" [title]=\"limpiarNumero(row[column.fieldname]) | number:'1.2-2'\"\r\n [ngClass]=\"row.situac == 'J' ? 'text-error':''\">\r\n {{limpiarNumero(row[column.fieldname]) | number:'1.2-2'}}\r\n </td>\r\n }\r\n\r\n @case ('list-select') {\r\n <td class=\"text-center b-table\" [title]=\"row[column.fieldname]\">\r\n <div ngbDropdown class=\"d-inline-block\" container=\"body\">\r\n <div class=\"h-100 bg-sidebar d-flex align-items-center px-1\">\r\n <button [disabled]=\"!isLast\" class=\"border-0 bg-none\"\r\n [ngClass]=\"!isLast ? 'text-muted' : 'text-input'\" ngbDropdownToggle>\r\n {{row[column.fieldname]}}\r\n </button>\r\n </div>\r\n <div ngbDropdownMenu class=\"my-0 py-0\">\r\n @for (item of column.lista; track $index; let last = $last) {\r\n <app-button [texto]=\"item.text\"\r\n [extraClass]=\"($index == 0 ? 'border-top-radius ' : '') + (last ? 'border-bottom-radius' : '')\"\r\n [dropdownButton]=\"true\" (accion)=\"item?.action(row,item.codigo)\" />\r\n }\r\n </div>\r\n </div>\r\n <!-- <app-dropdown-menu [options]=\"column.lista\" [disabled]=\"lastItemDisabled() ? false : !validaLastRegistro($index)\" [buttonProperties]=\"{color:'none',texto:row[column.fieldname]}\"/> -->\r\n </td>\r\n\r\n }\r\n\r\n @case ('input') {\r\n <td class=\"b-table\" [title]=\"row[column.fieldname]\" [ngClass]=\"row.situac == 'J' ? 'text-error':''\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"row[column.fieldname]\"\r\n (focus)=\"focusData(row[column.fieldname])\"\r\n (blur)=\"!validarData(row[column.fieldname]) ? null : column?.blur(row)\"\r\n (keyup.enter)=\"!validarData(row[column.fieldname]) ? null : column?.enter(row)\"\r\n [disabled]=\"column.disabled ? (typeof column.disabled === 'function' ? column.disabled(row) : column.disabled) : false\">\r\n </td>\r\n }\r\n\r\n @case ('input-date') {\r\n <td class=\"b-table\" [title]=\"row[column.fieldname]\" [ngClass]=\"row.situac == 'J' ? 'text-error':''\">\r\n <input type=\"date\" class=\"form-control\" [(ngModel)]=\"row[column.fieldname]\"\r\n (blur)=\"column?.blur(row)\" (keyup.enter)=\"column?.enter(row)\"\r\n [disabled]=\"column.disabled ? (typeof column.disabled === 'function' ? column.disabled(row) : column.disabled) : false\">\r\n </td>\r\n }\r\n\r\n @case ('input-etiqueta') {\r\n <td class=\"b-table\" [title]=\"row[column.fieldname]\" [ngClass]=\"row.situac == 'J' ? 'text-error':''\">\r\n <!-- <app-doble-input-buscar [oneinput]=\"true\" type=\"etiqueta\" [withDetails]=\"true\"\r\n [(valuedes)]=\"row[column.fieldname]\" [(disabled)]=\"row.disabledEtiqueta\"\r\n [auxiliarData]=\"{tipinv:row.tipinv,codart:row.codart,codtit:row.codtit,codalm:row.codalm}\"\r\n (emitirAdicionalData)=\"manejarDataEtiqueta($event,row)\"\r\n (disabledChange)=\"limpiarEtiqueta($event,row)\" [withBuscar2]=\"true\"\r\n [allDisabled]=\"row.disabledAll ?? false\" /> -->\r\n </td>\r\n }\r\n\r\n @case ('input-afecta') {\r\n <td class=\"b-table\" [title]=\"row[column.fieldname]\" [ngClass]=\"row.situac == 'J' ? 'text-error':''\">\r\n <!-- <app-doble-input-buscar [oneinput]=\"true\" type=\"tafecta\" [(valuecod)]=\"row[column.fieldname]\"\r\n [(disabled)]=\"row.disabledEtiqueta\" [(valuedes)]=\"row.dtipafec\" viewInput=\"cod\"\r\n [withBuscar]=\"true\" [allDisabled]=\"row.disabledAll ?? false\" /> -->\r\n </td>\r\n }\r\n\r\n @case ('input-number') {\r\n <td class=\"b-table\" [title]=\"row[column.fieldname]\" [ngClass]=\"row.situac == 'J' ? 'text-error':''\">\r\n <input type=\"text\" class=\"form-control text-end\"\r\n [ngClass]=\"(!column.valida ? '' : (row[column.fieldname] ?? 0) <= 0 ? 'input-error' : '')\"\r\n [(ngModel)]=\"row[column.fieldname]\" (blur)=\"validarFunction(column.blur)?.(row)\"\r\n [disabled]=\"row.disabledAll ?? false\" onlyNumber>\r\n </td>\r\n }\r\n\r\n @case ('input-decimal') {\r\n <td class=\"b-table\" [title]=\"row[column.fieldname]\" [ngClass]=\"row.situac == 'J' ? 'text-error':''\">\r\n <input type=\"text\" class=\"form-control text-end w-100\"\r\n [ngClass]=\"(!column.valida ? '' : (row[column.fieldname] ?? 0) <= 0 ? 'input-error' : '')\"\r\n [(ngModel)]=\"row[column.fieldname]\" (blur)=\"validarFunction(column.blur)?.(row)\"\r\n [appDecimal]=\"column.pipe\" [readonly]=\"column.readonly ? column.readonly(row) : false\"\r\n [disabled]=\"row.disabledAll ?? generateKeyDisabled(row,column)\" onlyNumber>\r\n </td>\r\n }\r\n\r\n @case ('input-select') {\r\n <td class=\"b-table\" [title]=\"row[column.fieldname]\" [ngClass]=\"row.situac == 'J' ? 'text-error':''\">\r\n <select class=\"form-select\" name=\"{{`cbo_lista_${row[column.fieldname]}`}}\"\r\n id=\"{{`cbo_lista_${row[column.fieldname]}`}}\" [(ngModel)]=\"row[column.fieldname]\"\r\n (change)=\"validarFunction(column.change)?.(row)\"\r\n [disabled]=\"column.disabled ? (typeof column.disabled === 'function' ? column.disabled(row) : column.disabled) : false\">\r\n @for (item of column.lista; track $index) {\r\n <option [value]=\"item[column.keyCodigo]\"> {{ item[column.keyDescri]}} </option>\r\n }\r\n </select>\r\n </td>\r\n }\r\n\r\n @case ('stock') {\r\n <td class=\"b-table text-center\" [title]=\"row[column.fieldname] ? row[column.fieldname] : 'Sin Stock'\">\r\n @if (limpiarNumero(row[column.fieldname]) > 0) {\r\n {{row[column.fieldname]}}\r\n }@else {\r\n <i class=\"fas fa-times text-danger fw-bold fs-4\"></i>\r\n }\r\n </td>\r\n }\r\n\r\n @default {\r\n <td class=\"b-table\" [title]=\"row[column.fieldname]\" [ngClass]=\"row.situac == 'J' ? 'text-error':''\">\r\n <span [ngClass]=\"isLast ? 'cursor-pointer' : ''\"\r\n (click)=\"isLast ? column?.clic() : null\">{{row[column.fieldname]}}</span>\r\n </td>\r\n }\r\n }\r\n }\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n</div>","import { CommonModule, DatePipe, DecimalPipe, NgClass } from '@angular/common';\r\nimport { Component, computed, ContentChild, inject, input, linkedSignal, model, output, signal, TemplateRef } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CellRender, CellRendered } from '../../../models/cell-rendered';\r\n\r\n@Component({\r\n selector: 'app-table-simple',\r\n imports: [FormsModule, CommonModule],\r\n templateUrl: './table-simple.component.html',\r\n styleUrl: './table-simple.component.scss',\r\n providers:[DatePipe,DecimalPipe]\r\n})\r\nexport class TableSimpleComponent {\r\n\r\n private datePipe = inject(DatePipe)\r\n private decimalPipe = inject(DecimalPipe)\r\n\r\n withFiltro = input<boolean>(false)\r\n busqueda = model<string>('')\r\n rows = input<any[]>([])\r\n columns = input<any[]>([]);\r\n altoContainer = input<number>()\r\n selectedRow = model<any>(null)\r\n identifier = input<string[]>([])\r\n position = input<'flex'|'block'>('flex')\r\n withSelect = input<boolean>(false)\r\n selected = output<any>()\r\n\r\n rendered = input<CellRendered[]>([])\r\n\r\n isDarkMode = input<boolean>(false)\r\n\r\n @ContentChild('customActions', { static: false }) customActions!: TemplateRef<any>\r\n\r\n checkString = {\r\n 'S': 'Activo',\r\n 'N': 'Inactivo'\r\n }\r\n\r\n rowFilter = computed(() => {\r\n const term = this.busqueda().toLowerCase()\r\n const currentRows = this.rows?.() || []\r\n return currentRows.filter(item => this.filtraItem(item, term))\r\n })\r\n\r\n filtrarColumnas = linkedSignal(() => {\r\n const columns = this.columns()\r\n const filtro: { [caption: string]: boolean } = {}\r\n columns.forEach((col) => {\r\n if (col.fieldname) {\r\n filtro[col.fieldname] = true\r\n }\r\n })\r\n return filtro\r\n })\r\n\r\n concatenarValue(obj: any, value: string[]) {\r\n let result = ''\r\n value.forEach(el => {\r\n result += obj[el]\r\n })\r\n return result\r\n }\r\n\r\n selectRow(index: any) {\r\n if (this.identifier().length < 1) {\r\n return this.selectedRow.set(index)\r\n }\r\n this.selectedRow.set(this.concatenarValue(index, this.identifier()))\r\n }\r\n\r\n checkItem (row:any) {\r\n if(this.withSelect()){\r\n this.selected.emit(row)\r\n }\r\n }\r\n\r\n getHighlight(text: any): string {\r\n if (text == null) {\r\n text = ''\r\n }\r\n if (!this.busqueda()) return text\r\n if (typeof text !== 'string') {\r\n text = text.toString()\r\n }\r\n const regex = new RegExp(`(${this.busqueda()})`, 'gi')\r\n return text?.replace(regex, '<mark>$1</mark>')\r\n }\r\n\r\n generateValueContainer = () => {\r\n if(this.position() == 'flex' && this.altoContainer()){\r\n return 'calc(100vh - ' + this.altoContainer() + 'px)'\r\n }\r\n if(this.position() == 'block' && this.altoContainer()){\r\n return this.altoContainer() + 'px'\r\n }\r\n return ''\r\n }\r\n\r\n getTipoCampo(fieldname: string): string {\r\n const columna = this.columns().find(col => col.fieldname == fieldname)\r\n return columna?.tipo ?? 'string'\r\n }\r\n\r\n private filtraItem(item: any, term: string): boolean {\r\n const columnasActivas = Object.entries(this.filtrarColumnas())\r\n .filter(([_campo, activo]) => activo)\r\n\r\n return columnasActivas.some(([campo]) => {\r\n let valor = item[campo]\r\n const tipo = this.getTipoCampo(campo)\r\n\r\n switch (tipo) {\r\n case 'fecha':\r\n valor = this.datePipe.transform(valor, 'dd/MM/yyyy') ?? ''\r\n break\r\n case 'decimal':\r\n valor = this.decimalPipe.transform(valor, '1.2-2') ?? ''\r\n break\r\n case 'check':\r\n valor = valor ? 'Sí' : 'No'\r\n break\r\n default:\r\n valor = (valor ?? '').toString()\r\n }\r\n\r\n return valor.toLowerCase().includes(term)\r\n })\r\n }\r\n\r\n textoDigitado(event: Event) {\r\n const value = (event.target as HTMLInputElement).value\r\n this.busqueda.set(value)\r\n }\r\n \r\n resolveCell(col:string, row:any): CellRender | null {\r\n const value = row[col];\r\n const r = this.rendered().find(r => r.matches(col, value, row));\r\n return r ? r.render(value, row) : null;\r\n }\r\n}\r\n","@if (withFiltro()) {\r\n<div class=\"col-12 mb-2 mt-2 d-flex justify-content-end align-items-center\">\r\n <label for=\"\" class=\"form-label me-2 pt-2\">Buscar:</label>\r\n <input type=\"text\" class=\"form-control cw-250\" (input)=\"textoDigitado($event)\">\r\n</div>\r\n}\r\n<div class=\"table-container table-responsive\" [style.max-height]=\"generateValueContainer()\"\r\n [style.height]=\"generateValueContainer()\">\r\n <table #table class=\"table table-striped normal-table\" [ngClass]=\"isDarkMode() ? 'table-dark' : ''\">\r\n <thead>\r\n <tr class=\"shadow-sm\"> \r\n @if (customActions) {\r\n <th scope=\"col\" class=\"width-50 mwp-50 b-table h-table\"></th>\r\n }\r\n\r\n @for (column of columns(); track $index) {\r\n @if (column.tipo !== 'mostrar' || column.condition()) {\r\n <th class=\"b-table h-table\" scope=\"col\" #thElement [title]=\"column.caption\" [style.width]=\"column.width + 'px'\"\r\n [style.min-width]=\"column.width + 'px'\">\r\n {{ column.caption }}\r\n </th>\r\n }\r\n }\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n @for (row of rowFilter(); track $index) {\r\n <tr [ngClass]=\"{'table-active': (identifier().length < 1 ? selectedRow() == $index : selectedRow() == concatenarValue(row,identifier()))}\"\r\n (click)=\"selectRow(identifier().length < 1 ? $index : row); checkItem(row)\"\r\n [id]=\"identifier().length < 1 ? ('row_table_' + $index) : ('row_table_'+ concatenarValue(row,identifier()))\">\r\n\r\n\r\n @if (customActions) {\r\n <td class=\"text-center mwp-90 b-table\">\r\n <ng-container *ngTemplateOutlet=\"customActions; context: { $implicit: row }\"></ng-container>\r\n </td>\r\n }\r\n \r\n @for (column of columns(); track $index) {\r\n @if (column.template) {\r\n <td class=\"b-table\">\r\n <ng-container *ngTemplateOutlet=\"column.template; context: { $implicit: row, column: column }\">\r\n </ng-container>\r\n </td>\r\n\r\n }\r\n @else {\r\n\r\n @switch (column.tipo) {\r\n @case ('fecha') {\r\n <td class=\"b-table\" [innerHTML]=\"getHighlight(row[column.fieldname] | date:'dd/MM/yyyy')\"\r\n [title]=\"row[column.fieldname] | date:'dd/MM/yyyy'\" [ngClass]=\"row.situac == 'J' ? 'text-error':''\">\r\n </td>\r\n\r\n }\r\n\r\n @case ('situacion') {\r\n <td class=\"b-table\" [innerHTML]=\"getHighlight(row[column.fieldname])\" [title]=\"row[column.fieldname]\"\r\n [ngClass]=\"row.situac == 'J' ? 'text-error':''\">\r\n\r\n </td>\r\n\r\n }\r\n\r\n @case ('decimal') {\r\n <td class=\"text-end b-table\" [innerHTML]=\"getHighlight((row[column.fieldname] ?? 0) | number:'1.2-2')\"\r\n [title]=\"(row[column.fieldname] ?? 0) | number:'1.2-2'\"\r\n [ngClass]=\"row.situac == 'J' ? 'text-error':''\">\r\n </td>\r\n }\r\n\r\n @case ('text-center') {\r\n <td class=\"text-center b-table\" [innerHTML]=\"getHighlight(row[column.fieldname])\"\r\n [title]=\"row[column.fieldname]\" [ngClass]=\"row.situac == 'J' ? 'text-error':''\">\r\n </td>\r\n }\r\n\r\n @case ('check') {\r\n <td class=\"text-center b-table\" [title]=\"checkString[row[column.fieldname]]\">\r\n <i class=\"fs-5\"\r\n [ngClass]=\"row[column.fieldname] == 'S'?'fas fa-check yes-icon':'fas fa-times no-icon'\"></i>\r\n </td>\r\n }\r\n\r\n @case ('cell-render') {\r\n @let resolverItem = resolveCell(column.fieldname, row);\r\n @if (resolverItem) {\r\n <td class=\"b-table\" [title]=\"resolverItem.text\" [class.text-center]=\"resolverItem.icon\">\r\n @if (resolverItem.icon) {\r\n <i class=\"fs-5\" [ngClass]=\"resolverItem.icon\"></i>\r\n } @else if (resolverItem.class) {\r\n <span [ngClass]=\"resolverItem.class\">{{ resolverItem.text }}</span>\r\n } @else {\r\n {{ resolverItem.text }}\r\n }\r\n </td>\r\n }\r\n }\r\n\r\n @default {\r\n <td class=\"b-table\" [innerHTML]=\"getHighlight(row[column.fieldname])\" [title]=\"row[column.fieldname]\"\r\n [ngClass]=\"row.situac == 'J' ? 'text-error':''\">\r\n\r\n </td>\r\n\r\n }\r\n }\r\n\r\n }\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n</div>","import { Component, contentChild, input, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-tab-item',\r\n imports: [],\r\n template: ''\r\n})\r\nexport class TabItemComponent {\r\n\r\n id = input<number | string>();\r\n title = input<string>('');\r\n content = contentChild<TemplateRef<any>>(TemplateRef)\r\n}\r\n","import { Component, contentChildren, effect, input, model } from '@angular/core';\r\nimport { TabItemComponent } from '../tab-item/tab-item.component';\r\nimport { NgbNavModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-nav-tabs',\r\n imports: [NgbNavModule,CommonModule],\r\n templateUrl: './nav-tabs.component.html',\r\n styleUrl: './nav-tabs.component.scss'\r\n})\r\nexport class NavTabsComponent {\r\n\r\n //@ContentChildren(TabItemComponent) tabItems!: QueryList<TabItemComponent>;\r\n\r\n tabItems = contentChildren<TabItemComponent>(TabItemComponent);\r\n active = model<number | string>(1)\r\n isDestroy = input<boolean>(true)\r\n}\r\n","<ul ngbNav #nav=\"ngbNav\" [(activeId)]=\"active\" class=\"nav nav-tabs\" [destroyOnHide]=\"isDestroy()\">\r\n @for (tab of tabItems(); track $index) {\r\n <li [ngbNavItem]=\"tab.id()\">\r\n <button ngbNavLink>{{ tab.title() }}</button>\r\n <ng-template ngbNavContent>\r\n <ng-container *ngTemplateOutlet=\"tab.content()\"></ng-container>\r\n </ng-template>\r\n </li>\r\n }\r\n \r\n</ul>\r\n<div [ngbNavOutlet]=\"nav\" class=\"mt-2\"></div>","/*\r\n * Public API Surface of ng-components-tsi\r\n */\r\n// ALERTAS\r\nexport * from './lib/ui/alerts/alert-confirmation/alert-confirmation.component';\r\nexport * from './lib/ui/alerts/alert-fecha-emision/alert-fecha-emision.component';\r\nexport * from './lib/ui/alerts/alerta/alerta.component';\r\nexport * from './lib/ui/alerts/badge/badge.component';\r\nexport * from './lib/ui/alerts/toaster/toaster.component';\r\n\r\n// DROPDOWN\r\nexport * from './lib/ui/dropdown/dropdown-cdk/dropdown-cdk.component';\r\nexport * from './lib/ui/dropdown/dropdown-simple/dropdown.component';\r\n\r\n// FORMS\r\nexport * from './lib/ui/forms/button/button.component';\r\nexport * from './lib/ui/forms/header/header.component';\r\n\r\n// INPUTS\r\nexport * from './lib/ui/forms/inputs/autocomplete/autocomplete.component';\r\nexport * from './lib/ui/forms/inputs/autocomplete-cdk/autocomplete.component';\r\nexport * from './lib/ui/forms/inputs/check-box/check-box.component';\r\nexport * from './lib/ui/forms/inputs/doble-input/doble-input.component';\r\nexport * from './lib/ui/forms/inputs/input/input.component';\r\nexport * from './lib/ui/forms/inputs/input-clase/input-clase.component';\r\nexport * from './lib/ui/forms/inputs/input-dinamico/input-dinamico.component';\r\nexport * from './lib/ui/forms/inputs/input-radio/input-radio.component';\r\nexport * from './lib/ui/forms/inputs/multiselected/multiselected.component';\r\nexport * from './lib/ui/forms/inputs/radio/radio.component';\r\nexport * from './lib/ui/forms/inputs/switch/switch.component';\r\n\r\n// LIST\r\nexport * from './lib/ui/forms/lists/list-option/list-option.component';\r\nexport * from './lib/ui/forms/lists/list-situaciones/list-situaciones.component';\r\nexport * from './lib/ui/forms/lists/multi-select-dropdown/multi-select-dropdown.component';\r\n\r\n// SIDEBAR\r\nexport * from './lib/ui/forms/sidebar/sidebar.component';\r\n\r\n// GENERAL\r\nexport * from './lib/ui/general/detalle-credito/detalle-credito.component';\r\nexport * from './lib/ui/general/montos-calcular/montos-calcular.component';\r\nexport * from './lib/ui/general/spinner/spinner.component';\r\n\r\n// TABLES\r\nexport * from './lib/ui/tables/card-mobile/card-mobile.component';\r\nexport * from './lib/ui/tables/dropdown-menu/dropdown-menu.component';\r\nexport * from './lib/ui/tables/paginador/paginador.component';\r\nexport * from './lib/ui/tables/table-advance/table-advance.component';\r\nexport * from './lib/ui/tables/table-advance-optimizada/table-advance-optimizada.component';\r\nexport * from './lib/ui/tables/table-busqueda/table-busqueda.component';\r\nexport * from './lib/ui/tables/table-detalle/table-detalle.component';\r\nexport * from './lib/ui/tables/table-simple/table-simple.component';\r\n\r\n// TABS\r\nexport * from './lib/ui/tabs/nav-tabs/nav-tabs.component';\r\nexport * from './lib/ui/tabs/tab-item/tab-item.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1"],"mappings":"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"}
|