sf-documents 0.1.2 → 0.1.3

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.
@@ -180,15 +180,13 @@ class FolderFilesComponent {
180
180
  this.searchQuery = '';
181
181
  this.page = 1;
182
182
  this.applyPermissions();
183
- if (this.carpeta.children && this.carpeta.children.length > 0) {
183
+ if (this.carpeta.children && this.carpeta.children.length > 0 && !this.usesApi) {
184
184
  // Modo children pre-cargados
185
- this.usesApi = false;
186
185
  this.items = this.carpeta.children;
187
186
  this.items.forEach((item) => (item.delete = false));
188
187
  }
189
188
  else {
190
189
  // Modo API paginada
191
- this.usesApi = true;
192
190
  this.items = [];
193
191
  this.loadFiles();
194
192
  }
@@ -279,11 +277,11 @@ class FolderFilesComponent {
279
277
  this.items.forEach(item => (item.delete = this.allSelected));
280
278
  this.docsEliminables = this.allSelected ? [...this.items] : [];
281
279
  }
282
- refresh() {
283
- if (this.usesApi) {
284
- this.loadFiles();
285
- }
286
- }
280
+ // refresh(): void {
281
+ // if (this.usesApi) {
282
+ // this.loadFiles();
283
+ // }
284
+ // }
287
285
  onPageSizeChange() {
288
286
  this.first = 0;
289
287
  this.page = 1;
@@ -1 +1 @@
1
- {"version":3,"file":"sf-documents.mjs","sources":["../../../projects/sf-documents/src/lib/sf-documents.service.ts","../../../projects/sf-documents/src/lib/pipes/safe.pipe.ts","../../../projects/sf-documents/src/lib/gateways/document.port.ts","../../../projects/sf-documents/src/lib/components/dialog/upload-dialog/upload-dialog.component.ts","../../../projects/sf-documents/src/lib/components/dialog/upload-dialog/upload-dialog.component.html","../../../projects/sf-documents/src/lib/components/folder-files/folder-files.component.ts","../../../projects/sf-documents/src/lib/components/folder-files/folder-files.component.html","../../../projects/sf-documents/src/lib/sf-documents.component.ts","../../../projects/sf-documents/src/lib/sf-documents.component.html","../../../projects/sf-documents/src/public-api.ts","../../../projects/sf-documents/src/sf-documents.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SfDocumentsService {\r\n _loading = new BehaviorSubject<boolean>(false);\r\n loading$ = this._loading.asObservable();\r\n\r\n set loading(loading: boolean) {\r\n this._loading.next(loading);\r\n }\r\n constructor() { }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\n\r\n@Pipe({ name: 'safe' })\r\n\r\nexport class SafePipe implements PipeTransform {\r\n\r\n constructor(private sanitizer: DomSanitizer) { }\r\n transform(url:any) {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n}","import { InjectionToken } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nexport interface DocumentGatewayService{\r\n getFolders(idKatios:string, data: any): Observable<any>;\r\n updateStatus(idKatios:string, data: any): Observable<any>;\r\n uploadFiles(idKatios: string, formData: FormData): Observable<any>;\r\n generateDocument(idKatios:string, idDoc:string , noDoc:string,data: any): Observable<any>;\r\n getDocumentsToGenerate(idKatios:string, noDoc: string): Observable<any>;\r\n getFilesByFolder(idKatios: string, nmco: string, data: any, pageNumber: number, pageSize: number, search: string): Observable<any>;\r\n}\r\n\r\nexport const DOCUMENT_SERVICE = new InjectionToken<DocumentGatewayService>('DOCUMENT_SERVICE');","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DialogModule } from 'primeng/dialog';\r\n\r\n@Component({\r\n selector: 'lib-upload-dialog',\r\n imports: [CommonModule, ButtonModule, DialogModule],\r\n templateUrl: './upload-dialog.component.html',\r\n styleUrl: './upload-dialog.component.scss'\r\n})\r\nexport class UploadDialogComponent {\r\n @Input() selectedDocument: any;\r\n @Output() onUploaded = new EventEmitter<{ fileList: File[], tagValue: any }>();\r\n @Output() loadFile = new EventEmitter<void>();\r\n visible: boolean = false;\r\n @ViewChild('fileInput', { static: true })\r\n fileInput!: ElementRef<HTMLInputElement>;\r\n\r\n constructor() { }\r\n\r\n showDialog(){\r\n this.loadFile.emit();\r\n this.visible = true;\r\n }\r\n loadFileClick() {\r\n this.fileInput.nativeElement.value = '';\r\n this.fileInput.nativeElement.click();\r\n }\r\n fileChange(event: any) {\r\n const input = event.target as HTMLInputElement;\r\n if (!input.files?.length) return;\r\n const files = Array.from(input.files);\r\n const pdfs = files.filter(f =>\r\n f.type === 'application/pdf' || f.name.toLowerCase().endsWith('.pdf')\r\n );\r\n const imagePathInput = input.value;\r\n if(pdfs?.length) this.onUploaded.emit({ fileList: pdfs, tagValue: imagePathInput });\r\n this.visible = false;\r\n }\r\n\r\n}\r\n","<button pButton type=\"button\" label=\"Subir archivo\" icon=\"pi pi-upload\"\r\n class=\"p-button-outlined ff-btn-upload\"\r\n (click)=\"showDialog()\"></button>\r\n\r\n<p-dialog [header] = \"'Adicionar ' + selectedDocument.label\" [(visible)]=\"visible\" [modal]=\"true\" [style]=\"{ width: '30rem' }\" [breakpoints]=\"{ '1199px': '75vw', '575px': '90vw' }\"\r\nposition = \"top\" [closable]=\"true\" (onHide)=\"visible=false\">\r\n <div class=\"mt-3\">\r\n <div class=\"text-center\">\r\n <input #fileInput type=\"file\" (change)=\"fileChange($event)\" class=\"hidden\"\r\n placeholder=\"Upload file\" accept=\"application/pdf,.pdf\" multiple>\r\n </div>\r\n <div class=\"text-center\">\r\n <p-button\r\n icon=\"pi pi-upload\"\r\n (click)=\"loadFileClick()\"\r\n [text] = \"true\"\r\n [rounded]=\"true\"\r\n ></p-button>\r\n\r\n <!-- <label *ngIf=\"isMobile\" (click)=\"openModal2(scanContent)\" class=\"btn\">\r\n <mat-icon style=\"font-size: 2.5em; color:#0056b2\">camera_alt</mat-icon>\r\n </label> -->\r\n </div>\r\n </div>\r\n</p-dialog>\r\n","import { Component, EventEmitter, inject, Input, OnChanges, OnDestroy, Output, SimpleChanges } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { InputIcon } from 'primeng/inputicon';\r\nimport { IconField } from 'primeng/iconfield';\r\nimport { PaginatorModule } from 'primeng/paginator';\r\nimport { SafePipe } from '../../pipes/safe.pipe';\r\nimport { UploadDialogComponent } from '../dialog/upload-dialog/upload-dialog.component';\r\nimport { DOCUMENT_SERVICE, DocumentGatewayService } from '../../gateways/document.port';\r\nimport { SfDocumentsService } from '../../sf-documents.service';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';\r\nimport { SelectModule } from 'primeng/select';\r\n\r\n@Component({\r\n selector: 'lib-folder-files',\r\n imports: [\r\n CommonModule, FormsModule, ButtonModule,\r\n CheckboxModule, InputTextModule, InputIcon, IconField,\r\n PaginatorModule, SafePipe, UploadDialogComponent, SelectModule\r\n ],\r\n templateUrl: './folder-files.component.html',\r\n styleUrls: ['./folder-files.component.scss'],\r\n standalone: true\r\n})\r\nexport class FolderFilesComponent implements OnChanges, OnDestroy {\r\n private documentsService = inject<DocumentGatewayService>(DOCUMENT_SERVICE);\r\n private searchSubject = new Subject<string>();\r\n private destroy$ = new Subject<void>();\r\n\r\n @Input() carpeta: any;\r\n @Input() isMobile: boolean = false;\r\n @Input() idKatios: any;\r\n @Input() server: string = '';\r\n @Input() subestado: string = '';\r\n @Input() requestData: any;\r\n @Input() useBreadcrumb: boolean = false;\r\n @Input() usesApi = true;\r\n @Output() onFileChange = new EventEmitter<any>();\r\n @Output() onCargarArchivo = new EventEmitter<any>();\r\n @Output() onEliminarMasivo = new EventEmitter<any[]>();\r\n @Output() onOpenVisorDoc = new EventEmitter<any>();\r\n @Output() onOpenNewWindow = new EventEmitter<any>();\r\n @Output() onBack = new EventEmitter<void>();\r\n \r\n items: any[] = [];\r\n page = 1;\r\n pageSize = 10;\r\n totalRecords = 0;\r\n totalPages = 0;\r\n first = 0;\r\n searchQuery = '';\r\n docsEliminables: any[] = [];\r\n totalDocsEliminadosApi = { existoso: 0, fallido: 0 };\r\n loading = false;\r\n allSelected = false;\r\n pageSizeOptions = [\r\n { label: '5/pág', value: 5 },\r\n { label: '10/pág', value: 10 },\r\n { label: '20/pág', value: 20 }\r\n ];\r\n\r\n constructor(private documentService: SfDocumentsService) {\r\n this.searchSubject.pipe(\r\n debounceTime(400),\r\n distinctUntilChanged(),\r\n takeUntil(this.destroy$)\r\n ).subscribe(() => {\r\n this.page = 1;\r\n if(this.usesApi) {\r\n this.loadFiles();\r\n }else{\r\n if(this.searchQuery.trim() === '' || !this.searchQuery) {\r\n this.items = this.carpeta.children;\r\n }\r\n else{\r\n this.items = this.carpeta.children.filter((item: any) => item.label.toLowerCase().includes(this.searchQuery.toLowerCase()));\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['carpeta'] && this.carpeta) {\r\n this.init();\r\n }\r\n }\r\n\r\n private init(): void {\r\n this.docsEliminables = [];\r\n this.totalDocsEliminadosApi = { existoso: 0, fallido: 0 };\r\n this.searchQuery = '';\r\n this.page = 1;\r\n\r\n this.applyPermissions();\r\n\r\n if (this.carpeta.children && this.carpeta.children.length > 0) {\r\n // Modo children pre-cargados\r\n this.usesApi = false;\r\n this.items = this.carpeta.children;\r\n this.items.forEach((item: any) => (item.delete = false));\r\n } else {\r\n // Modo API paginada\r\n this.usesApi = true;\r\n this.items = [];\r\n this.loadFiles();\r\n }\r\n }\r\n\r\n private applyPermissions(): void {\r\n if (this.carpeta?.reglas && typeof this.carpeta.reglas === 'string') {\r\n this.carpeta.reglas = JSON.parse(this.carpeta.reglas);\r\n }\r\n if (!this.carpeta?.reglas?.permisos?.subestados && this.carpeta?.reglas?.permisos) {\r\n this.carpeta.reglas.permisos.cargarFront = this.carpeta.reglas.permisos.cargar;\r\n this.carpeta.reglas.permisos.borrarFront = this.carpeta.reglas.permisos.borrar;\r\n } else if (this.carpeta?.reglas?.permisos?.subestados && this.subestado?.trim()) {\r\n const sub = this.subestado.toLowerCase().trim();\r\n this.carpeta.reglas.permisos.cargarFront = Array.isArray(this.carpeta.reglas.permisos.subestados.cargar)\r\n ? this.carpeta.reglas.permisos.subestados.cargar.map((c: any) => c.toLowerCase().trim()).includes(sub)\r\n : this.carpeta.reglas.permisos.cargar;\r\n this.carpeta.reglas.permisos.borrarFront = Array.isArray(this.carpeta.reglas.permisos.subestados.borrar)\r\n ? this.carpeta.reglas.permisos.subestados.borrar.map((b: any) => b.toLowerCase().trim()).includes(sub)\r\n : this.carpeta.reglas.permisos.borrar;\r\n }\r\n }\r\n\r\n loadFiles(): void {\r\n this.loading = true;\r\n this.documentsService.getFilesByFolder(\r\n this.idKatios,\r\n this.carpeta.NMCo,\r\n this.requestData,\r\n this.page,\r\n this.pageSize,\r\n this.searchQuery\r\n ).subscribe({\r\n next: (response: any) => {\r\n const res = response?.data ?? response;\r\n this.totalRecords = res.total ?? 0;\r\n this.page = res.page ?? 1;\r\n this.totalPages = res.totalPages ?? 0;\r\n this.items = res.items ?? [];\r\n this.items.forEach((item: any) => (item.delete = false));\r\n this.buildPaths(this.items);\r\n this.loading = false;\r\n },\r\n error: (error: any) => {\r\n console.error('Error loading files by folder:', error);\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n\r\n onPageChange(event: any): void {\r\n this.first = event.first ?? 0;\r\n this.page = (event.page ?? 0) + 1;\r\n this.pageSize = event.rows ?? this.pageSize;\r\n this.loadFiles();\r\n }\r\n\r\n onSearchInput(): void {\r\n this.searchSubject.next(this.searchQuery);\r\n }\r\n\r\n /** Construye la ruta completa de cada archivo usando el server */\r\n private buildPaths(items: any[]): void {\r\n if (!this.server) return;\r\n items.forEach((item: any) => {\r\n if (item.Path && !item.Path.startsWith('http')) {\r\n let path = 'Imagenes/' + item.Path + item.label;\r\n path = path.replace(/\\\\/g, '/');\r\n item.Path = this.server + path;\r\n }\r\n });\r\n }\r\n\r\n fileChange(data: any): void {\r\n this.onFileChange.emit(data);\r\n }\r\n\r\n cargarArchivo(): void {\r\n this.onCargarArchivo.emit(this.carpeta);\r\n }\r\n\r\n openVisorDoc(item: any): void {\r\n this.onOpenVisorDoc.emit(item);\r\n }\r\n\r\n openNewWindow(item: any): void {\r\n this.onOpenNewWindow.emit(item);\r\n }\r\n\r\n goBack(): void {\r\n this.onBack.emit();\r\n }\r\n\r\n onClickedCheckDelete(event: any, document: any): void {\r\n if (event.checked) this.docsEliminables.push(document);\r\n else this.docsEliminables = this.docsEliminables.filter(doc => doc !== document);\r\n }\r\n\r\n emitEliminarMasivo(): void {\r\n this.onEliminarMasivo.emit(this.docsEliminables);\r\n }\r\n\r\n toggleSelectAll(): void {\r\n this.items.forEach(item => (item.delete = this.allSelected));\r\n this.docsEliminables = this.allSelected ? [...this.items] : [];\r\n }\r\n\r\n refresh(): void {\r\n if (this.usesApi) {\r\n this.loadFiles();\r\n }\r\n }\r\n\r\n onPageSizeChange(): void {\r\n this.first = 0;\r\n this.page = 1;\r\n this.loadFiles();\r\n }\r\n}\r\n","<div class=\"ff-layout\">\r\n <!-- Header fijo -->\r\n <div class=\"ff-header\">\r\n <div class=\"ff-back-row\" *ngIf=\"!useBreadcrumb\">\r\n <button pButton type=\"button\" icon=\"pi pi-arrow-left\" label=\"Volver\" (click)=\"goBack()\"></button>\r\n </div>\r\n\r\n <!-- Toolbar: búsqueda + botones de acción -->\r\n <div class=\"ff-toolbar\">\r\n <p-iconfield class=\"ff-toolbar__search\">\r\n <p-inputicon class=\"pi pi-search\" />\r\n <input type=\"text\" pInputText\r\n [placeholder]=\"'Buscar en ' + carpeta.label.replace('#toolbar=0&navpanes=0&statusbar=0','')\"\r\n [(ngModel)]=\"searchQuery\"\r\n (input)=\"onSearchInput()\"\r\n class=\"w-full\">\r\n </p-iconfield>\r\n\r\n <div class=\"ff-toolbar__actions\">\r\n <lib-upload-dialog *ngIf=\"carpeta?.reglas?.permisos?.cargarFront\"\r\n [selectedDocument]=\"carpeta\"\r\n (onUploaded)=\"fileChange($event)\"\r\n (loadFile)=\"cargarArchivo()\">\r\n </lib-upload-dialog>\r\n\r\n <button pButton type=\"button\"\r\n icon=\"pi pi-trash\"\r\n *ngIf=\"carpeta?.reglas?.permisos?.borrarFront\"\r\n (click)=\"emitEliminarMasivo()\"\r\n [disabled]=\"docsEliminables.length === 0\"\r\n class=\"p-button-outlined p-button-danger p-button-sm ff-btn-delete\">\r\n <span class=\"ff-btn-label\">Eliminar ({{docsEliminables.length}})</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Fila seleccionar todo / total archivos -->\r\n <div class=\"ff-select-row\" *ngIf=\"!loading && items.length > 0\">\r\n <div class=\"ff-select-row__left\">\r\n <p-checkbox *ngIf=\"carpeta?.reglas?.permisos?.borrarFront\"\r\n [binary]=\"true\"\r\n [(ngModel)]=\"allSelected\"\r\n (onChange)=\"toggleSelectAll()\">\r\n </p-checkbox>\r\n <span *ngIf=\"carpeta?.reglas?.permisos?.borrarFront\" class=\"ff-select-row__label\">Seleccionar todo</span>\r\n </div>\r\n <span class=\"ff-select-row__count\">{{totalRecords || items.length}} {{(totalRecords || items.length) === 1 ? 'archivo' : 'archivos'}}</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Contenido scrollable -->\r\n <div class=\"ff-file-list-wrapper\">\r\n <!-- Loading -->\r\n <div *ngIf=\"loading\" class=\"ff-loading\">\r\n <i class=\"pi pi-spin pi-spinner\" style=\"font-size: 2rem;\"></i>\r\n </div>\r\n\r\n <!-- Lista de archivos -->\r\n <div class=\"ff-file-list\" *ngIf=\"!loading\">\r\n <div class=\"ff-file-item\" *ngFor=\"let item of items\" (click)=\"openVisorDoc(item)\">\r\n <p-checkbox *ngIf=\"carpeta?.reglas?.permisos?.borrarFront\"\r\n [binary]=\"true\"\r\n [(ngModel)]=\"item.delete\"\r\n (onChange)=\"onClickedCheckDelete($event, item)\"\r\n (click)=\"$event.stopPropagation()\">\r\n </p-checkbox>\r\n\r\n <div class=\"ff-file-item__preview\">\r\n <embed *ngIf=\"carpeta.TipoArchivo == '2'\" class=\"ff-file-item__frame\"\r\n [src]=\"item.Path | safe\">\r\n <img *ngIf=\"carpeta.TipoArchivo == '1' && isMobile\" class=\"ff-file-item__frame\"\r\n src=\"https://macuna.tecfinanzas.com/Imagenes/pdf_icon.png\">\r\n <iframe *ngIf=\"carpeta.TipoArchivo == '1' && !isMobile\" class=\"ff-file-item__frame\"\r\n [src]=\"item.Path | safe\" frameborder=\"0\"></iframe>\r\n </div>\r\n\r\n <div class=\"ff-file-item__info\">\r\n <span class=\"ff-file-item__name\">{{item.label}}</span>\r\n <span class=\"ff-file-item__date\" *ngIf=\"item.FechaSubida && !isMobile\">Fecha Subida: {{item.FechaSubida | date:'dd/MM/yyyy HH:mm'}}</span>\r\n <span class=\"ff-file-item__date\" *ngIf=\"item.FechaSubida && isMobile\">{{item.FechaSubida | date:'dd/MM/yyyy HH:mm'}}</span>\r\n <i class=\"pi pi-external-link ff-file-item__open\"\r\n (click)=\"openNewWindow(item); $event.stopPropagation()\"\r\n role=\"button\" tabindex=\"0\"\r\n aria-label=\"Abrir en nueva ventana\"\r\n (keydown.enter)=\"openNewWindow(item); $event.stopPropagation()\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Sin resultados -->\r\n <div *ngIf=\"!loading && items.length === 0\" class=\"ff-empty\">\r\n Sin documentos cargados\r\n </div>\r\n </div>\r\n\r\n <!-- Footer fijo: paginación compacta -->\r\n <div class=\"ff-footer\" *ngIf=\"usesApi && totalRecords > 0\">\r\n <div class=\"ff-pagination\">\r\n <p-select [options]=\"pageSizeOptions\" optionLabel=\"label\" optionValue=\"value\"\r\n [(ngModel)]=\"pageSize\" (ngModelChange)=\"onPageSizeChange()\">\r\n </p-select>\r\n <p-paginator\r\n [first]=\"first\"\r\n [rows]=\"pageSize\"\r\n [totalRecords]=\"totalRecords\"\r\n (onPageChange)=\"onPageChange($event)\"\r\n [showCurrentPageReport]=\"true\"\r\n currentPageReportTemplate=\"{first} - {last} de {totalRecords}\"\r\n [showPageLinks]=\"false\"\r\n [showFirstLastIcon]=\"false\">\r\n </p-paginator>\r\n </div>\r\n </div>\r\n</div>\r\n","import { ApplicationRef, Component, ElementRef, EventEmitter, inject, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { ConfirmationService, MessageService, TreeNode } from 'primeng/api';\r\nimport { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport * as _ from \"lodash\";\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { PanelModule } from 'primeng/panel';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SafePipe } from './pipes/safe.pipe';\r\nimport { DOCUMENT_SERVICE, DocumentGatewayService } from './gateways/document.port';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { InputIcon } from 'primeng/inputicon';\r\nimport { IconField } from 'primeng/iconfield';\r\nimport { UploadDialogComponent } from './components/dialog/upload-dialog/upload-dialog.component';\r\nimport { FolderFilesComponent } from './components/folder-files/folder-files.component';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { SfDocumentsService } from './sf-documents.service';\r\nimport { finalize, switchMap, tap } from 'rxjs/operators';\r\nimport { DatePickerModule } from 'primeng/datepicker';\r\nimport { of } from 'rxjs';\r\nimport { SfDocumentNavigationState } from './models/navigation-state.model';\r\n\r\ndeclare var cordova: any;\r\ndeclare var window: any;\r\n\r\n@Component({\r\n selector: 'app-sf-documents',\r\n imports: [\r\n ToastModule, ButtonModule, ConfirmDialogModule, PanelModule, CheckboxModule,\r\n DialogModule, CommonModule, FormsModule, SafePipe, InputTextModule, InputIcon,\r\n IconField, FolderFilesComponent,\r\n DropdownModule, DatePickerModule\r\n ],\r\n templateUrl: './sf-documents.component.html',\r\n styleUrls: ['./sf-documents.component.scss'],\r\n providers: [DialogService, ConfirmationService],\r\n standalone: true\r\n})\r\nexport class SfDocumentsComponent implements OnDestroy, OnChanges {\r\n private documentsService = inject<DocumentGatewayService>(DOCUMENT_SERVICE);\r\n @Input() accion: string = \"\";\r\n @Input() entidad: string = \"\";\r\n @Input() ndoc: string = \"\";\r\n @Input() tdoc: string = \"\";\r\n @Input() tipo: string = \"\";\r\n //Información necesaria para cargar documentos de productos\r\n @Input() Kasociada: string = \"\";\r\n @Input() Producto: string = \"\";\r\n @Input() Solicitud: string = \"\";\r\n @Input() oSession: any;\r\n @Input() perfilDocumentos: any;\r\n @Input() subestado: string = '';\r\n @Input() isMobile: boolean = false;\r\n @Output() nextTabPapa: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n @Input() bAtras: boolean = false;\r\n @Input() bFinal: boolean = false;\r\n @Input() botones: boolean = true;\r\n @Input() aplFiltro: boolean = false;\r\n\r\n @Input() nmco: string[] = [];\r\n @Input() useBreadcrumb: boolean = false;\r\n\r\n @Input() usesApi: boolean = true;\r\n\r\n @Output() onNavigationChange = new EventEmitter<SfDocumentNavigationState>();\r\n\r\n @Input() server: string = \"\";\r\n valorFiltro: string = \"\";\r\n\r\n tab = 1;\r\n enProceso = false;\r\n carpetaSeleccionada: any;\r\n files: any;\r\n filesFilter: any;\r\n imagePathInput: any;\r\n modalReference: DynamicDialogRef | undefined;\r\n modalReference2: DynamicDialogRef | undefined;\r\n documentoSeleccionado: any;\r\n totalDocsEliminadosApi = { existoso: 0, fallido: 0 };\r\n file: any;\r\n urlDoc: any;\r\n pdfUrl: any;\r\n current_path: string = \"\";\r\n current_label: string = \"\";\r\n scanFileList = new Array<any>();\r\n displayPDF: boolean = false;\r\n\r\n @ViewChild('pdf', { read: ElementRef }) public panel!: ElementRef<any>;\r\n UsuarioNdoc: any;\r\n UsuarioTdoc: any;\r\n @Input() idKatios: any;\r\n\r\n displayGenerate = false;\r\n\r\n canGenerate = true;\r\n\r\n documentTypes: any[] = [];\r\n documentsToGenerate: any[] = [];\r\n documentsToGenerateMap: Record<string, any> = {};\r\n dynamicParams: any[] = [];\r\n dynamicValues: Record<string, any> = {};\r\n selectedDocType: string | null = null;\r\n selectedRange: string | null = null;\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer,\r\n private dialog: DialogService,\r\n public snackBar: MessageService,\r\n private appRef: ApplicationRef,\r\n private confirmationService: ConfirmationService,\r\n private documentService: SfDocumentsService\r\n ) { }\r\n\r\n // ngOnInit() {\r\n // if (this.oSession != null && this.oSession.UsuarioSistema.TDOC !== undefined && this.oSession.UsuarioSistema.NDOC !== undefined) {\r\n // this.idKatios = this.oSession.UsuarioSistema.IDKATIOS.trim();\r\n // this.perfilDocumentos = this.oSession.UsuarioSistema.PERDOCUMENTOS.trim();\r\n // }\r\n // if (this.tipo && this.perfilDocumentos) {\r\n // this.cargarParametros(this.tipo)\r\n // }\r\n // }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.files = [];\r\n this.filesFilter = [];\r\n this.imagePathInput = null;\r\n this.modalReference = undefined;\r\n this.modalReference2 = undefined;\r\n this.carpetaSeleccionada = null;\r\n this.documentoSeleccionado = null;\r\n this.totalDocsEliminadosApi = { existoso: 0, fallido: 0 };\r\n this.file = null;\r\n this.urlDoc = null;\r\n this.pdfUrl = null;\r\n this.current_path = \"\";\r\n this.current_label = \"\";\r\n this.scanFileList = new Array<any>();\r\n this.displayPDF = false;\r\n this.displayGenerate = false;\r\n this.canGenerate = true;\r\n this.documentTypes = [];\r\n this.documentsToGenerate = [];\r\n this.documentsToGenerateMap = {};\r\n this.dynamicParams = [];\r\n this.dynamicValues = {};\r\n this.selectedDocType = null;\r\n this.selectedRange = null;\r\n if (this.oSession != null && this.oSession.UsuarioSistema.TDOC !== undefined && this.oSession.UsuarioSistema.NDOC !== undefined) {\r\n this.idKatios = this.oSession.UsuarioSistema.IDKATIOS.trim();\r\n this.perfilDocumentos = this.oSession.UsuarioSistema.PERDOCUMENTOS.trim();\r\n }\r\n if (this.tipo && this.perfilDocumentos) {\r\n this.cargarParametros(this.tipo)\r\n }\r\n }\r\n\r\n cargarParametros(tipo: string) {\r\n if (tipo !== '1') return;\r\n\r\n this.documentService.loading = true;\r\n\r\n const data = {\r\n action: this.accion,\r\n entity: this.entidad,\r\n tdoc: this.tdoc,\r\n ndoc: this.ndoc,\r\n request: this.Solicitud,\r\n documentProfile: this.perfilDocumentos,\r\n product: this.Producto\r\n };\r\n\r\n this.documentsService.getFolders(this.idKatios, data).pipe(\r\n tap((response: any) => {\r\n let res = response.data;\r\n if (response.data.RESPUESTA) res = response.data.RESPUESTA;\r\n this.okCargoArbol(res);\r\n }),\r\n switchMap(() =>\r\n this.Solicitud ? this.documentsService.getDocumentsToGenerate(this.idKatios, this.Solicitud) : of(null)\r\n ),\r\n tap((resp: any) => {\r\n const list = resp?.data ?? []; // según tu JSON real\r\n this.documentsToGenerate = list;\r\n\r\n this.documentsToGenerateMap = {};\r\n list.forEach((d: any) => (this.documentsToGenerateMap[d.idDoc] = d));\r\n\r\n // dropdown: usa idDoc pero mantén objeto completo en map\r\n this.documentTypes = list.map((d: any) => ({\r\n label: d.description,\r\n code: d.idDoc\r\n }));\r\n }),\r\n finalize(() => {\r\n this.documentService.loading = false;\r\n })\r\n ).subscribe({\r\n error: (error: any) => {\r\n this.errorCargarArbol(error);\r\n }\r\n });\r\n\r\n this.tab = 1;\r\n this.documentoSeleccionado = null;\r\n this.emitNavigationState();\r\n }\r\n expandAll() {\r\n this.files.forEach((node: any) => {\r\n this.expandRecursive(node, true);\r\n });\r\n }\r\n\r\n private expandRecursive(node: TreeNode, isExpand: boolean) {\r\n node.expanded = isExpand;\r\n var objeto: any;\r\n objeto = node\r\n if (node.children && node.children?.length > 0) {\r\n node.children.forEach(childNode => {\r\n this.expandRecursive(childNode, isExpand);\r\n });\r\n } else if (objeto.Path !== undefined) {\r\n var path = 'Imagenes/' + objeto.Path + objeto.label\r\n var re = /[\\\\]/gi;\r\n path = path.replace(re, \"/\")\r\n objeto.Path = this.server + path\r\n //this.sanitizer.bypassSecurityTrustUrl(this.server + path)\r\n }\r\n }\r\n\r\n public okCargoArbol = (iArbol: any) => {\r\n if (!iArbol.CARPETA && iArbol.length === undefined) {\r\n iArbol = new Array(iArbol)\r\n }\r\n else if (iArbol.CARPETA.length === undefined) {\r\n iArbol = new Array(iArbol.CARPETA)\r\n }\r\n\r\n iArbol.forEach((element: any) => {\r\n this.convertirArrayChildren(element)\r\n });\r\n\r\n //\r\n this.filtrarTipoDocumento(iArbol)\r\n //\r\n this.files = iArbol;\r\n this.filesFilter = iArbol;\r\n this.expandAll();\r\n this.documentService.loading = false;\r\n }\r\n public errorCargarArbol = (iError: any) => {\r\n this.message(\"error\", \"Error al traer la información\", iError.message);\r\n this.documentService.loading = false;\r\n }\r\n\r\n // onClickedCheckDelete($event: any, document: any) {\r\n // if ($event.checked) this.docsEliminables.push(document);\r\n // else this.docsEliminables = this.docsEliminables.filter(doc => doc !== document);\r\n // }\r\n\r\n funcOkDelDocumentMasivo = (docsEliminables: any[]) => {\r\n this.totalDocsEliminadosApi.existoso += 1;\r\n if (this.totalDocsEliminadosApi.existoso + this.totalDocsEliminadosApi.fallido === docsEliminables.length) {\r\n this.cargarParametros(this.tipo);\r\n if (this.totalDocsEliminadosApi.fallido > 0) this.message(\"warn\", \"\", \"Algunos documentos no pudieron ser eliminados\");\r\n else this.message(\"success\", \"\", \"Documentos eliminados satisfactoriamente\");\r\n\r\n }\r\n }\r\n\r\n funcErrDelDocumentMasivo = (docsEliminables: any[]) => {\r\n this.totalDocsEliminadosApi.fallido += 1;\r\n if (this.totalDocsEliminadosApi.existoso + this.totalDocsEliminadosApi.fallido === docsEliminables.length) {\r\n this.cargarParametros(this.tipo);\r\n this.message(\"warn\", \"\", \"Algunos documentos no pudieron ser eliminados\");\r\n }\r\n }\r\n\r\n eliminarMasivo(docsEliminables: any[]) {\r\n this.confirmationService.confirm({\r\n message: `¿Desea eliminar los ${docsEliminables.length} documentos seleccionados?`,\r\n acceptLabel: 'Si',\r\n rejectLabel: 'No',\r\n accept: () => {\r\n this.documentService.loading = true\r\n this.totalDocsEliminadosApi = { existoso: 0, fallido: 0 };\r\n docsEliminables.forEach(doc => {\r\n let data = { \"code\": doc.codigo, \"status\": \"DES\" };\r\n this.documentsService.updateStatus(this.idKatios, data).subscribe({\r\n next: (response: any) => {\r\n this.funcOkDelDocumentMasivo(docsEliminables);\r\n },\r\n error: (error: any) => {\r\n this.documentService.loading = false;\r\n this.funcErrDelDocumentMasivo(docsEliminables);\r\n }\r\n });\r\n })\r\n }\r\n });\r\n }\r\n\r\n filtrarTipoDocumento(iArbol: any) {\r\n if (this.nmco.length !== 0) {\r\n iArbol.forEach((element: any) => {\r\n element.children = element.children.filter((child: any) => this.nmco.includes(child.NMCo));\r\n })\r\n }\r\n }\r\n\r\n convertirArrayChildren(node: any) {\r\n if (node.children === undefined) node.children = []\r\n else if (node.children.length == undefined) {\r\n node.children = new Array(node.children)\r\n }\r\n node.children.forEach((childNode: any) => {\r\n this.convertirArrayChildren(childNode);\r\n });\r\n\r\n }\r\n openBigModal(content: any) {\r\n this.modalReference = this.dialog.open(content, {\r\n width: '70%',\r\n modal: true,\r\n closable: true\r\n });\r\n this.modalReference.onClose.subscribe((result: any) => {\r\n //this.closeResult = `Closed with: ${result}`;\r\n });\r\n // this.modalReference.onHide.subscribe(() => {\r\n // //this.closeResult = `Dismissed ${this.getDismissReason(reason)}`;\r\n // });\r\n }\r\n\r\n openModal2(content: any) {\r\n this.modalReference2 = this.dialog.open(content, {});\r\n this.modalReference2.onClose.subscribe((result: any) => {\r\n //this.closeResult = `Closed with: ${result}`;\r\n });\r\n }\r\n\r\n\r\n // takePhotoClick() {\r\n // this.documentsService.openCamera(this.ok_openCamera, this.error_openCamera);\r\n // }\r\n /////Cuando se cargar archivos adjuntos\r\n fileChange(data: any) {\r\n const fileList = data.fileList;\r\n const tagValue = data.tagValue;\r\n this.file = fileList[0];\r\n this.imagePathInput = tagValue;\r\n this.generarData(fileList);\r\n }\r\n\r\n // ok_openCamera = (imageUri: any) => {\r\n // this.makeFileIntoBlob(imageUri)\r\n // .then((file: Blob) => {\r\n // this.appRef.tick();\r\n // if (file.size > 1000000) {\r\n // if (confirm(\"Este archivo es bastate pesado, le recomendamos bajar la calidad de la cámara. ¿Desea subir este archivo?\")) {\r\n // this.loadFileToList(file);\r\n // }\r\n // } else {\r\n // this.loadFileToList(file);\r\n // }\r\n // this.documentService.loading = false;\r\n // })\r\n // .catch((error: Error) => {\r\n // console.error('Error processing camera image:', error);\r\n // this.message(\"Error al procesar la imagen de la cámara\", \"Error\");\r\n // this.documentService.loading = false;\r\n // });\r\n // }\r\n\r\n loadFileToList(file: any) {\r\n\r\n setTimeout(() => {\r\n file[\"name\"] = \"scan\" + Date.now() + this.scanFileList.length + \".jpg\"\r\n this.scanFileList.push(file);\r\n this.scanFileList = this.scanFileList.slice();\r\n this.documentService.loading = false\r\n this.message(\"success\", \"\", \"Archivo cargado exitosamente\");\r\n\r\n this.appRef.tick();\r\n }, 200)\r\n }\r\n\r\n subirFotosScan() {\r\n this.generarData(this.scanFileList);\r\n }\r\n // error_openCamera = (err: any) => {\r\n // console.log(err);\r\n // this.message(\"No se pudo acceder a la camara\", \"Error\")\r\n // }\r\n\r\n noZonePatch(cb: () => void) {\r\n const orig = FileReader;\r\n const unpatched = ((window as any).FileReader as any).__zone_symbol__OriginalDelegate;\r\n (window as any).FileReader = unpatched;\r\n cb();\r\n (window as any).FileReader = orig;\r\n }\r\n\r\n makeFileIntoBlob(_imagePath: any): Promise<Blob> {\r\n this.documentService.loading = true;\r\n // INSTALL PLUGIN - cordova plugin add cordova-plugin-file\r\n return new Promise((resolve, reject) => {\r\n try {\r\n window.resolveLocalFileSystemURL(_imagePath, (fileEntry: any) => {\r\n fileEntry.file((resFile: any) => {\r\n this.noZonePatch(() => {//! Alert 1: Comentarear esta linea y una de de abajo para ambiente de prueba\r\n var reader = new FileReader();\r\n\r\n reader.onloadend = (evt: any) => {\r\n var imgBlob: any = new Blob([evt.target.result], { type: 'image/jpeg' });\r\n imgBlob.name = 'scan.jpg';\r\n resolve(imgBlob);\r\n };\r\n\r\n reader.onerror = (e) => {\r\n console.log('Failed file read: ' + e.toString());\r\n reject(e);\r\n };\r\n reader.readAsArrayBuffer(resFile);\r\n });//!Comentarear esta linea y una de de arriba para ambiente de prueba\r\n });\r\n }, (error: any) => {\r\n console.error('Error resolving file system URL:', error);\r\n reject(error);\r\n });\r\n } catch (ex) {\r\n console.error('Error in makeFileIntoBlob:', ex);\r\n reject(ex);\r\n }\r\n });\r\n }\r\n\r\n subirImagen(data: any, fileList: any) {\r\n this.documentService.loading = true;\r\n const formData: FormData = new FormData();\r\n var dataDocs;\r\n var sIdKatios = this.idKatios;\r\n dataDocs = { \"data\": data };\r\n formData.append('data', JSON.stringify(dataDocs));\r\n formData.append('merge', \"true\");\r\n\r\n for (let _i = 0; _i < fileList.length; _i++) {\r\n formData.append('files', fileList[_i], fileList[_i].name);\r\n }\r\n\r\n this.documentsService.uploadFiles(sIdKatios, formData).subscribe({\r\n next: (response: any) => {\r\n this.scanFileList = new Array<any>();\r\n if (this.modalReference2) {\r\n this.modalReference2.close();\r\n }\r\n if (this.modalReference) {\r\n this.modalReference.close();\r\n }\r\n this.message(\"success\", \"Felicidades\", \"Se almacenó el documento correctamente\");\r\n this.cargarParametros(this.tipo)\r\n this.documentService.loading = false;\r\n this.appRef.tick();\r\n },\r\n error: (err: any) => {\r\n this.documentService.loading = false;\r\n this.message(\"error\", \"Se presentaron inconvenientes almacenando el documento\", err.message);\r\n console.error(\"Error : \" + err);\r\n },\r\n });\r\n }\r\n\r\n generarData(fileList: any) {\r\n this.documentService.loading = true\r\n var sPath1;\r\n var dataClientes\r\n let sPaths = \"\";\r\n if (this.documentoSeleccionado.Tipo.trim().toUpperCase() == \"PERSONA\") {\r\n sPath1 = this.documentoSeleccionado.Tipo.trim() + \"\\\\\" + this.tdoc.trim() +\r\n \"\\\\\" + this.ndoc.trim() + \"\\\\Cliente\\\\\" + this.documentoSeleccionado.NMCo.trim();\r\n } else {\r\n //Kasociada\r\n //producto\r\n //Falta numero de solicitud\r\n\r\n\r\n\r\n sPath1 = this.documentoSeleccionado.Tipo.trim() + \"\\\\\" + this.Kasociada +\r\n \"\\\\\" + this.Producto + \"\\\\\" + this.Solicitud + \"\\\\\" + this.documentoSeleccionado.NMCo;\r\n }\r\n\r\n dataClientes = {\r\n \"Tipo\": this.documentoSeleccionado.Tipo,\r\n \"id\": \"1\",\r\n \"documento\": this.documentoSeleccionado.NMCo,\r\n \"tdoc\": this.tdoc.trim(),\r\n \"ndoc\": this.ndoc.trim(),\r\n \"IdProducto\": this.Solicitud,\r\n \"TipoProducto\": this.Producto,\r\n \"Kasociada\": this.Kasociada,\r\n \"archivoUpload\": fileList[0],\r\n \"nombre\": this.tdoc.trim() + '-' + this.ndoc.trim(),\r\n \"fileCargado\": fileList[0],\r\n \"pathArchivo\": sPath1,\r\n \"TipoArchivo\": this.documentoSeleccionado.TipoArchivo\r\n }\r\n sPaths = sPaths + sPath1 + \",\";\r\n this.subirImagen(dataClientes, fileList)\r\n }\r\n\r\n cargarArchivo(iNodo: any) {\r\n this.scanFileList = new Array<any>();\r\n this.documentoSeleccionado = iNodo;\r\n }\r\n\r\n async openDoc(item: any, pdfContent: any) {\r\n if (this.carpetaSeleccionada.TipoArchivo == '1' && this.isMobile) {\r\n cordova.InAppBrowser.open(item.Path, '_system', 'location=yes');\r\n } else {\r\n this.current_path = item.Path;\r\n this.current_label = item.label;\r\n this.openBigModal(pdfContent);\r\n }\r\n }\r\n\r\n openVisorDoc(item: any) {\r\n if (this.carpetaSeleccionada.TipoArchivo == '1' && this.isMobile) {//is mobile\r\n cordova.InAppBrowser.open(item.Path, '_system', 'location=yes');\r\n } else {\r\n this.current_path = item.Path;\r\n this.current_label = item.label;\r\n this.displayPDF = true;\r\n }\r\n }\r\n\r\n async openNewWindow(item: any) {\r\n window.open(item.Path, '_blank').focus();\r\n }\r\n\r\n async seleccionoDocs(iNodo: any) {\r\n var path = iNodo.Path + iNodo.label\r\n this.pdfUrl = \"//imagenes//\" + iNodo.idKatios + \"//\" + path;\r\n this.pdfUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.pdfUrl);\r\n this.gotoBottom();\r\n }\r\n\r\n\r\n message(severity: string, summary: string, message: any) {\r\n this.snackBar.add({\r\n severity: severity,\r\n summary: summary,\r\n detail: message,\r\n life: 4000\r\n });\r\n }\r\n\r\n\r\n public gotoBottom(): void {\r\n window.scrollBy(0, this.panel.nativeElement.scrollHeight)\r\n }\r\n\r\n\r\n get requestData(): any {\r\n return {\r\n action: this.accion,\r\n entity: this.entidad,\r\n tdoc: this.tdoc,\r\n ndoc: this.ndoc,\r\n request: this.Solicitud,\r\n documentProfile: this.perfilDocumentos,\r\n product: this.Producto\r\n };\r\n }\r\n\r\n public VerDetalleTab(items: any) {\r\n this.carpetaSeleccionada = items;\r\n this.totalDocsEliminadosApi = { existoso: 0, fallido: 0 };\r\n this.tab = 2;\r\n this.emitNavigationState();\r\n }\r\n\r\n goToTab(tab: any) {\r\n this.tab = tab;\r\n this.emitNavigationState();\r\n }\r\n\r\n private emitNavigationState(): void {\r\n if (!this.useBreadcrumb) return;\r\n const state: SfDocumentNavigationState = { tab: this.tab };\r\n if (this.tab === 2 && this.carpetaSeleccionada) {\r\n state.folderLabel = (this.carpetaSeleccionada.label || '')\r\n .replace('#toolbar=0&navpanes=0&statusbar=0', '');\r\n }\r\n this.onNavigationChange.emit(state);\r\n }\r\n\r\n next(iValor: any) {\r\n if (iValor < 0) {\r\n this.nextTabPapa.emit(iValor)\r\n } else {\r\n var respuesta = \"\"\r\n if (this.files) respuesta = this.valorDocumentosPendientes(this.files[0])\r\n\r\n if (respuesta == \"\") {\r\n this.nextTabPapa.emit(iValor)\r\n } else {\r\n this.message(\"warn\", \"Ups!\", respuesta);\r\n }\r\n }\r\n }\r\n\r\n valorDocumentosPendientes(carpetas: any) {\r\n\r\n var respuesta = \"\";\r\n if (carpetas.children) {\r\n carpetas.children.forEach((carpeta: any) => {\r\n\r\n if (carpeta.Obligatorio == 1 && (!carpeta.children || carpeta.children.length == 0)) respuesta = \"Falta \" + carpeta.label\r\n })\r\n }\r\n return respuesta\r\n\r\n }\r\n\r\n filtrarDocumentos() {\r\n this.filesFilter = _.cloneDeep(this.files);\r\n for (let i = 0; i < this.files.length; i++) {\r\n let node = [];\r\n for (let j = 0; j < this.files[i].children.length; j++) {\r\n let file = this.files[i].children[j];\r\n if (file.label.toLowerCase().indexOf(this.valorFiltro.toLowerCase()) == 0) node.push(file)\r\n }\r\n this.filesFilter[i].children = node;\r\n }\r\n }\r\n ngOnDestroy() {\r\n if (this.modalReference) {\r\n this.modalReference.close();\r\n }\r\n if (this.modalReference2) {\r\n this.modalReference2.close();\r\n }\r\n }\r\n openGenerateDialog() {\r\n this.selectedDocType = null;\r\n this.selectedRange = null;\r\n this.displayGenerate = true;\r\n }\r\n\r\n generateDocument() {\r\n if (!this.selectedDocType) return;\r\n\r\n // Validación mínima: si hay params, exigir que no estén vacíos\r\n for (const p of this.dynamicParams || []) {\r\n const key = p.name;\r\n const v = this.dynamicValues?.[key];\r\n if (v === null || v === undefined || v === '') {\r\n this.message('warn', '', `Falta el parámetro ${p.description}`);\r\n return;\r\n }\r\n }\r\n\r\n // construir params\r\n const paramsToSend: any = {};\r\n for (const p of this.dynamicParams || []) {\r\n const key = p.name;\r\n const raw = this.dynamicValues?.[key];\r\n\r\n paramsToSend[p.name] =\r\n (p.type || '').toLowerCase() === 'date'\r\n ? this.toYYYYMMDD(raw)\r\n : raw;\r\n }\r\n\r\n this.enProceso = true;\r\n\r\n const payload = {\r\n params: paramsToSend\r\n };\r\n this.documentsService.generateDocument(this.idKatios, this.selectedDocType, this.Solicitud, payload).subscribe({\r\n next: () => {\r\n this.displayGenerate = false;\r\n this.message('success', '', 'Documento en generación');\r\n this.cargarParametros(this.tipo);\r\n this.enProceso = false;\r\n },\r\n error: (err: any) => {\r\n this.message('error', 'No se pudo generar el documento', err?.message || err);\r\n this.enProceso = false;\r\n }\r\n });\r\n }\r\n private toYYYYMMDD(value: any): string | null {\r\n if (!value) return null;\r\n const d = value instanceof Date ? value : new Date(value);\r\n if (isNaN(d.getTime())) return null;\r\n\r\n // ISO: 2025-12-19T05:00:00.000Z -> 2025-12-19\r\n return d.toISOString().slice(0, 10);\r\n }\r\n onDocTypeChange() {\r\n const doc = this.selectedDocType ? this.documentsToGenerateMap[this.selectedDocType] : null;\r\n\r\n this.dynamicParams = doc?.params ?? [];\r\n this.dynamicValues = {}; // reset valores\r\n\r\n // valores default opcionales\r\n for (const p of this.dynamicParams) {\r\n const key = p.name;\r\n this.dynamicValues[key] = null;\r\n }\r\n }\r\n\r\n}\r\n","<div class=\"sf-doc-layout\">\r\n <div class=\"sf-doc-fixed\">\r\n <div class=\"buttons\" *ngIf=\"botones\">\r\n <div class=\"div-table-col50\" style=\"text-align: center\" *ngIf=\"bAtras\">\r\n <button pButton type=\"button\" label=\"Atras\" icon=\"pi pi-arrow-left\" (click)=\"next(-1)\"></button>\r\n </div>\r\n <div class=\"div-table-col50\" style=\"text-align: center\" *ngIf=\"!bFinal && botones\">\r\n <button pButton type=\"button\" label=\"Siguiente\" icon=\"pi pi-arrow-right\" (click)=\"next(1)\"></button>\r\n </div>\r\n <div class=\"div-table-col50\" *ngIf=\"bFinal\">\r\n <button pButton type=\"button\" label=\"Finalizar\" icon=\"pi pi-home\" (click)=\"next(0)\"></button>\r\n </div>\r\n </div>\r\n <!-- Toolbar superior (solo tab 1) -->\r\n <div *ngIf=\"tab==1\" class=\"doc-toolbar\">\r\n <div class=\"doc-toolbar-left\" *ngIf=\"aplFiltro\">\r\n <p-iconfield>\r\n <p-inputicon class=\"pi pi-search\" />\r\n <input type=\"text\" pInputText placeholder=\"Buscar carpeta...\"\r\n [(ngModel)]=\"valorFiltro\"\r\n (keyup)=\"filtrarDocumentos()\"\r\n class=\"w-full\">\r\n </p-iconfield>\r\n </div>\r\n\r\n <div class=\"doc-toolbar-right\" *ngIf=\"(documentTypes.length > 0)\" >\r\n <button pButton type=\"button\"\r\n label=\"Generar documento\"\r\n icon=\"pi pi-plus\"\r\n class=\"p-button-sm\"\r\n (click)=\"openGenerateDialog()\"\r\n [disabled]=\"enProceso || !canGenerate\">\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <p-confirmDialog header=\"Atencion\" icon=\"pi pi-exclamation-triangle\"></p-confirmDialog>\r\n <div class=\"sf-doc-scrollable\" *ngIf=\"tab==1\">\r\n <ng-container *ngFor=\"let carpeta of filesFilter\">\r\n <div class=\"folder-list\">\r\n <div class=\"folder-item\" *ngFor=\"let item of carpeta.children\" (click)=\"VerDetalleTab(item)\">\r\n <i class=\"pi pi-folder folder-item__icon\" [ngStyle]=\"{'color': (item.children?.length > 0 || item.fileCount > 0) ? 'green':'red' }\"></i>\r\n <div class=\"folder-item__info\">\r\n <span class=\"folder-item__name\">{{item.label}}</span>\r\n <span class=\"folder-item__count\" *ngIf=\"item.children?.length > 0\">{{item.children.length}} {{item.children.length === 1 ? 'archivo' : 'archivos'}}</span>\r\n <span class=\"folder-item__count\" *ngIf=\"(!item.children || item.children.length === 0) && item.fileCount\">{{item.fileCount}} {{item.fileCount === 1 ? 'archivo' : 'archivos'}}</span>\r\n <span class=\"folder-item__count\" *ngIf=\"(!item.children || item.children.length === 0) && !item.fileCount\">0 archivos</span>\r\n </div>\r\n <i class=\"pi pi-chevron-right folder-item__arrow\"></i>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"botones\">\r\n <div class=\"buttons\">\r\n <div class=\"div-table-col50\" style=\"text-align: center\" *ngIf=\"bAtras\">\r\n <button pButton type=\"button\" label=\"Atras\" icon=\"pi pi-arrow-left\" (click)=\"next(-1)\"></button>\r\n </div>\r\n <div class=\"div-table-col50\" style=\"text-align: center\" *ngIf=\"!bFinal && botones\">\r\n <button pButton type=\"button\" label=\"Siguiente\" icon=\"pi pi-arrow-right\" (click)=\"next(1)\"></button>\r\n </div>\r\n <div class=\"div-table-col50\" *ngIf=\"bFinal\">\r\n <button pButton type=\"button\" label=\"Finalizar\" icon=\"pi pi-home\" (click)=\"next(0)\"></button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"sf-doc-scrollable sf-doc-scrollable--files\" *ngIf=\"tab==2\">\r\n <lib-folder-files\r\n [carpeta]=\"carpetaSeleccionada\"\r\n [isMobile]=\"isMobile\"\r\n [idKatios]=\"idKatios\"\r\n [server]=\"server\"\r\n [subestado]=\"subestado\"\r\n [requestData]=\"requestData\"\r\n [useBreadcrumb]=\"useBreadcrumb\"\r\n [usesApi]=\"usesApi\"\r\n (onFileChange)=\"fileChange($event)\"\r\n (onCargarArchivo)=\"cargarArchivo($event)\"\r\n (onOpenVisorDoc)=\"openVisorDoc($event)\"\r\n (onOpenNewWindow)=\"openNewWindow($event)\"\r\n (onEliminarMasivo)=\"eliminarMasivo($event)\"\r\n (onBack)=\"goToTab('1')\">\r\n </lib-folder-files>\r\n </div>\r\n</div>\r\n\r\n<p-dialog *ngIf=\"displayPDF\" [(visible)]=\"displayPDF\"\r\n header=\"{{current_label.replace('#toolbar=0&navpanes=0&statusbar=0','')}}\" [modal]=\"true\" [style]=\"{width: '70vw'}\">\r\n <embed *ngIf=\"carpetaSeleccionada.TipoArchivo == '2'\" [src]=\"current_path | safe\"\r\n style=\"width:100%; min-height: 600px\">\r\n <iframe *ngIf=\"carpetaSeleccionada.TipoArchivo == '1'\" style=\"width:100%; min-height: 600px\"\r\n [src]=\"current_path | safe\"></iframe>\r\n</p-dialog>\r\n\r\n\r\n<ng-template #pdfContent>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\" id=\"modal-basic-title\">{{current_label.replace('#toolbar=0&navpanes=0&statusbar=0','')}}\r\n </h4>\r\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"modalReference?.close()\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n <div>\r\n <embed *ngIf=\"carpetaSeleccionada.TipoArchivo == '2'\" [src]=\"current_path | safe\"\r\n style=\"width:100%; min-height: 600px\">\r\n <iframe *ngIf=\"carpetaSeleccionada.TipoArchivo == '1'\" style=\"width:100%; min-height: 600px\"\r\n [src]=\"current_path | safe\"></iframe>\r\n\r\n </div>\r\n</ng-template>\r\n\r\n<!-- <ng-template #scanContent>\r\n <div class=\"div-table\">\r\n <div class=\"div-table-row\" style=\"text-align: center\">\r\n <h4>Escanear documentos</h4>\r\n </div>\r\n <div class=\"div-table-row\" style=\"text-align: center\">\r\n Archivos cargados: <h4>{{scanFileList.length}}</h4>\r\n </div>\r\n <div class=\"div-table-row\" style=\"text-align: center\">\r\n <label (click)=\"takePhotoClick()\" class=\"btn\">\r\n <mat-icon style=\"font-size: 2.5em; color:#0056b2\">add_to_photos</mat-icon>\r\n </label>\r\n\r\n <label *ngIf=\"scanFileList.length != 0\" (click)=\"subirFotosScan()\" class=\"btn\">\r\n <mat-icon style=\"font-size: 2.5em; color:#0056b2\">share</mat-icon>\r\n </label>\r\n </div>\r\n </div>\r\n</ng-template> -->\r\n<p-dialog header=\"Generar documento\"\r\n [(visible)]=\"displayGenerate\"\r\n [modal]=\"true\"\r\n [closable]=\"true\"\r\n [style]=\"{width: isMobile ? '95vw' : '520px'}\">\r\n\r\n <div class=\"gen-form\">\r\n <!-- Tipo de documento -->\r\n <div class=\"gen-field\">\r\n <label class=\"gen-label\">Tipo de documento</label>\r\n <p-dropdown\r\n class=\"gen-control\"\r\n [options]=\"documentTypes\"\r\n optionLabel=\"label\"\r\n optionValue=\"code\"\r\n [(ngModel)]=\"selectedDocType\"\r\n placeholder=\"Seleccione un tipo\"\r\n appendTo=\"body\"\r\n (onChange)=\"onDocTypeChange()\">\r\n </p-dropdown>\r\n </div>\r\n\r\n <!-- Parámetros dinámicos -->\r\n <div class=\"gen-section\" *ngIf=\"dynamicParams.length\">\r\n <div class=\"gen-field\" *ngFor=\"let p of dynamicParams\">\r\n <label class=\"gen-label\">\r\n {{ p.description }}\r\n <span class=\"gen-required\" *ngIf=\"p.required\">*</span>\r\n </label>\r\n\r\n <!-- Date -->\r\n <p-datepicker\r\n *ngIf=\"(p.type || '').toLowerCase() === 'date'\"\r\n class=\"gen-control\"\r\n [(ngModel)]=\"dynamicValues[p.name]\"\r\n [showIcon]=\"true\"\r\n appendTo=\"body\"\r\n dateFormat=\"yy-mm-dd\">\r\n </p-datepicker>\r\n\r\n <!-- String -->\r\n <input\r\n *ngIf=\"(p.type || '').toLowerCase() === 'nvarchar' || (p.type || '').toLowerCase() === 'string'\"\r\n pInputText\r\n class=\"gen-control\"\r\n [(ngModel)]=\"dynamicValues[p.name]\"\r\n placeholder=\"Ingrese un valor\" />\r\n\r\n <!-- Number -->\r\n <p-inputNumber\r\n *ngIf=\"['int','decimal','number'].includes((p.type || '').toLowerCase())\"\r\n class=\"gen-control\"\r\n [(ngModel)]=\"dynamicValues[p.name]\"\r\n >\r\n </p-inputNumber>\r\n\r\n <!-- Boolean -->\r\n <div class=\"gen-control gen-checkbox\"\r\n *ngIf=\"['boolean','bit','bool'].includes((p.type || '').toLowerCase())\">\r\n <p-checkbox\r\n [binary]=\"true\"\r\n [(ngModel)]=\"dynamicValues[p.name]\">\r\n </p-checkbox>\r\n <span class=\"gen-checkbox-label\">Sí</span>\r\n </div>\r\n\r\n <!-- helper opcional -->\r\n <small class=\"gen-help\" *ngIf=\"p.help\">{{ p.help }}</small>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-template pTemplate=\"footer\">\r\n <button pButton type=\"button\" label=\"Cancelar\" class=\"p-button-text\"\r\n (click)=\"displayGenerate=false\"></button>\r\n\r\n <button pButton type=\"button\" label=\"Generar\" icon=\"pi pi-cog\"\r\n (click)=\"generateDocument()\"\r\n [disabled]=\"!selectedDocType || enProceso\">\r\n </button>\r\n </ng-template>\r\n</p-dialog>\r\n\r\n","/*\r\n * Public API Surface of sf-documents\r\n */\r\n\r\nexport * from './lib/sf-documents.service';\r\nexport * from './lib/sf-documents.component';\r\nexport * from './lib/gateways/document.port';\r\nexport * from './lib/components/folder-files/folder-files.component';\r\nexport * from './lib/models/navigation-state.model';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SfDocumentsService","i4","i2","i3","i4.SfDocumentsService","i5","i7","i8","i10","i11"],"mappings":"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"}
1
+ {"version":3,"file":"sf-documents.mjs","sources":["../../../projects/sf-documents/src/lib/sf-documents.service.ts","../../../projects/sf-documents/src/lib/pipes/safe.pipe.ts","../../../projects/sf-documents/src/lib/gateways/document.port.ts","../../../projects/sf-documents/src/lib/components/dialog/upload-dialog/upload-dialog.component.ts","../../../projects/sf-documents/src/lib/components/dialog/upload-dialog/upload-dialog.component.html","../../../projects/sf-documents/src/lib/components/folder-files/folder-files.component.ts","../../../projects/sf-documents/src/lib/components/folder-files/folder-files.component.html","../../../projects/sf-documents/src/lib/sf-documents.component.ts","../../../projects/sf-documents/src/lib/sf-documents.component.html","../../../projects/sf-documents/src/public-api.ts","../../../projects/sf-documents/src/sf-documents.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SfDocumentsService {\r\n _loading = new BehaviorSubject<boolean>(false);\r\n loading$ = this._loading.asObservable();\r\n\r\n set loading(loading: boolean) {\r\n this._loading.next(loading);\r\n }\r\n constructor() { }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\n\r\n@Pipe({ name: 'safe' })\r\n\r\nexport class SafePipe implements PipeTransform {\r\n\r\n constructor(private sanitizer: DomSanitizer) { }\r\n transform(url:any) {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n}","import { InjectionToken } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nexport interface DocumentGatewayService{\r\n getFolders(idKatios:string, data: any): Observable<any>;\r\n updateStatus(idKatios:string, data: any): Observable<any>;\r\n uploadFiles(idKatios: string, formData: FormData): Observable<any>;\r\n generateDocument(idKatios:string, idDoc:string , noDoc:string,data: any): Observable<any>;\r\n getDocumentsToGenerate(idKatios:string, noDoc: string): Observable<any>;\r\n getFilesByFolder(idKatios: string, nmco: string, data: any, pageNumber: number, pageSize: number, search: string): Observable<any>;\r\n}\r\n\r\nexport const DOCUMENT_SERVICE = new InjectionToken<DocumentGatewayService>('DOCUMENT_SERVICE');","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DialogModule } from 'primeng/dialog';\r\n\r\n@Component({\r\n selector: 'lib-upload-dialog',\r\n imports: [CommonModule, ButtonModule, DialogModule],\r\n templateUrl: './upload-dialog.component.html',\r\n styleUrl: './upload-dialog.component.scss'\r\n})\r\nexport class UploadDialogComponent {\r\n @Input() selectedDocument: any;\r\n @Output() onUploaded = new EventEmitter<{ fileList: File[], tagValue: any }>();\r\n @Output() loadFile = new EventEmitter<void>();\r\n visible: boolean = false;\r\n @ViewChild('fileInput', { static: true })\r\n fileInput!: ElementRef<HTMLInputElement>;\r\n\r\n constructor() { }\r\n\r\n showDialog(){\r\n this.loadFile.emit();\r\n this.visible = true;\r\n }\r\n loadFileClick() {\r\n this.fileInput.nativeElement.value = '';\r\n this.fileInput.nativeElement.click();\r\n }\r\n fileChange(event: any) {\r\n const input = event.target as HTMLInputElement;\r\n if (!input.files?.length) return;\r\n const files = Array.from(input.files);\r\n const pdfs = files.filter(f =>\r\n f.type === 'application/pdf' || f.name.toLowerCase().endsWith('.pdf')\r\n );\r\n const imagePathInput = input.value;\r\n if(pdfs?.length) this.onUploaded.emit({ fileList: pdfs, tagValue: imagePathInput });\r\n this.visible = false;\r\n }\r\n\r\n}\r\n","<button pButton type=\"button\" label=\"Subir archivo\" icon=\"pi pi-upload\"\r\n class=\"p-button-outlined ff-btn-upload\"\r\n (click)=\"showDialog()\"></button>\r\n\r\n<p-dialog [header] = \"'Adicionar ' + selectedDocument.label\" [(visible)]=\"visible\" [modal]=\"true\" [style]=\"{ width: '30rem' }\" [breakpoints]=\"{ '1199px': '75vw', '575px': '90vw' }\"\r\nposition = \"top\" [closable]=\"true\" (onHide)=\"visible=false\">\r\n <div class=\"mt-3\">\r\n <div class=\"text-center\">\r\n <input #fileInput type=\"file\" (change)=\"fileChange($event)\" class=\"hidden\"\r\n placeholder=\"Upload file\" accept=\"application/pdf,.pdf\" multiple>\r\n </div>\r\n <div class=\"text-center\">\r\n <p-button\r\n icon=\"pi pi-upload\"\r\n (click)=\"loadFileClick()\"\r\n [text] = \"true\"\r\n [rounded]=\"true\"\r\n ></p-button>\r\n\r\n <!-- <label *ngIf=\"isMobile\" (click)=\"openModal2(scanContent)\" class=\"btn\">\r\n <mat-icon style=\"font-size: 2.5em; color:#0056b2\">camera_alt</mat-icon>\r\n </label> -->\r\n </div>\r\n </div>\r\n</p-dialog>\r\n","import { Component, EventEmitter, inject, Input, OnChanges, OnDestroy, Output, SimpleChanges } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { InputIcon } from 'primeng/inputicon';\r\nimport { IconField } from 'primeng/iconfield';\r\nimport { PaginatorModule } from 'primeng/paginator';\r\nimport { SafePipe } from '../../pipes/safe.pipe';\r\nimport { UploadDialogComponent } from '../dialog/upload-dialog/upload-dialog.component';\r\nimport { DOCUMENT_SERVICE, DocumentGatewayService } from '../../gateways/document.port';\r\nimport { SfDocumentsService } from '../../sf-documents.service';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';\r\nimport { SelectModule } from 'primeng/select';\r\n\r\n@Component({\r\n selector: 'lib-folder-files',\r\n imports: [\r\n CommonModule, FormsModule, ButtonModule,\r\n CheckboxModule, InputTextModule, InputIcon, IconField,\r\n PaginatorModule, SafePipe, UploadDialogComponent, SelectModule\r\n ],\r\n templateUrl: './folder-files.component.html',\r\n styleUrls: ['./folder-files.component.scss'],\r\n standalone: true\r\n})\r\nexport class FolderFilesComponent implements OnChanges, OnDestroy {\r\n private documentsService = inject<DocumentGatewayService>(DOCUMENT_SERVICE);\r\n private searchSubject = new Subject<string>();\r\n private destroy$ = new Subject<void>();\r\n\r\n @Input() carpeta: any;\r\n @Input() isMobile: boolean = false;\r\n @Input() idKatios: any;\r\n @Input() server: string = '';\r\n @Input() subestado: string = '';\r\n @Input() requestData: any;\r\n @Input() useBreadcrumb: boolean = false;\r\n @Input() usesApi = true;\r\n @Output() onFileChange = new EventEmitter<any>();\r\n @Output() onCargarArchivo = new EventEmitter<any>();\r\n @Output() onEliminarMasivo = new EventEmitter<any[]>();\r\n @Output() onOpenVisorDoc = new EventEmitter<any>();\r\n @Output() onOpenNewWindow = new EventEmitter<any>();\r\n @Output() onBack = new EventEmitter<void>();\r\n \r\n items: any[] = [];\r\n page = 1;\r\n pageSize = 10;\r\n totalRecords = 0;\r\n totalPages = 0;\r\n first = 0;\r\n searchQuery = '';\r\n docsEliminables: any[] = [];\r\n totalDocsEliminadosApi = { existoso: 0, fallido: 0 };\r\n loading = false;\r\n allSelected = false;\r\n pageSizeOptions = [\r\n { label: '5/pág', value: 5 },\r\n { label: '10/pág', value: 10 },\r\n { label: '20/pág', value: 20 }\r\n ];\r\n\r\n constructor(private documentService: SfDocumentsService) {\r\n this.searchSubject.pipe(\r\n debounceTime(400),\r\n distinctUntilChanged(),\r\n takeUntil(this.destroy$)\r\n ).subscribe(() => {\r\n this.page = 1;\r\n if(this.usesApi) {\r\n this.loadFiles();\r\n }else{\r\n if(this.searchQuery.trim() === '' || !this.searchQuery) {\r\n this.items = this.carpeta.children;\r\n }\r\n else{\r\n this.items = this.carpeta.children.filter((item: any) => item.label.toLowerCase().includes(this.searchQuery.toLowerCase()));\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['carpeta'] && this.carpeta) {\r\n this.init();\r\n }\r\n }\r\n\r\n private init(): void {\r\n this.docsEliminables = [];\r\n this.totalDocsEliminadosApi = { existoso: 0, fallido: 0 };\r\n this.searchQuery = '';\r\n this.page = 1;\r\n\r\n this.applyPermissions();\r\n\r\n if (this.carpeta.children && this.carpeta.children.length > 0 && !this.usesApi) {\r\n // Modo children pre-cargados\r\n this.items = this.carpeta.children;\r\n this.items.forEach((item: any) => (item.delete = false));\r\n } else {\r\n // Modo API paginada\r\n this.items = [];\r\n this.loadFiles();\r\n }\r\n }\r\n\r\n private applyPermissions(): void {\r\n if (this.carpeta?.reglas && typeof this.carpeta.reglas === 'string') {\r\n this.carpeta.reglas = JSON.parse(this.carpeta.reglas);\r\n }\r\n if (!this.carpeta?.reglas?.permisos?.subestados && this.carpeta?.reglas?.permisos) {\r\n this.carpeta.reglas.permisos.cargarFront = this.carpeta.reglas.permisos.cargar;\r\n this.carpeta.reglas.permisos.borrarFront = this.carpeta.reglas.permisos.borrar;\r\n } else if (this.carpeta?.reglas?.permisos?.subestados && this.subestado?.trim()) {\r\n const sub = this.subestado.toLowerCase().trim();\r\n this.carpeta.reglas.permisos.cargarFront = Array.isArray(this.carpeta.reglas.permisos.subestados.cargar)\r\n ? this.carpeta.reglas.permisos.subestados.cargar.map((c: any) => c.toLowerCase().trim()).includes(sub)\r\n : this.carpeta.reglas.permisos.cargar;\r\n this.carpeta.reglas.permisos.borrarFront = Array.isArray(this.carpeta.reglas.permisos.subestados.borrar)\r\n ? this.carpeta.reglas.permisos.subestados.borrar.map((b: any) => b.toLowerCase().trim()).includes(sub)\r\n : this.carpeta.reglas.permisos.borrar;\r\n }\r\n }\r\n\r\n loadFiles(): void {\r\n this.loading = true;\r\n this.documentsService.getFilesByFolder(\r\n this.idKatios,\r\n this.carpeta.NMCo,\r\n this.requestData,\r\n this.page,\r\n this.pageSize,\r\n this.searchQuery\r\n ).subscribe({\r\n next: (response: any) => {\r\n const res = response?.data ?? response;\r\n this.totalRecords = res.total ?? 0;\r\n this.page = res.page ?? 1;\r\n this.totalPages = res.totalPages ?? 0;\r\n this.items = res.items ?? [];\r\n this.items.forEach((item: any) => (item.delete = false));\r\n this.buildPaths(this.items);\r\n this.loading = false;\r\n },\r\n error: (error: any) => {\r\n console.error('Error loading files by folder:', error);\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n\r\n onPageChange(event: any): void {\r\n this.first = event.first ?? 0;\r\n this.page = (event.page ?? 0) + 1;\r\n this.pageSize = event.rows ?? this.pageSize;\r\n this.loadFiles();\r\n }\r\n\r\n onSearchInput(): void {\r\n this.searchSubject.next(this.searchQuery);\r\n }\r\n\r\n /** Construye la ruta completa de cada archivo usando el server */\r\n private buildPaths(items: any[]): void {\r\n if (!this.server) return;\r\n items.forEach((item: any) => {\r\n if (item.Path && !item.Path.startsWith('http')) {\r\n let path = 'Imagenes/' + item.Path + item.label;\r\n path = path.replace(/\\\\/g, '/');\r\n item.Path = this.server + path;\r\n }\r\n });\r\n }\r\n\r\n fileChange(data: any): void {\r\n this.onFileChange.emit(data);\r\n }\r\n\r\n cargarArchivo(): void {\r\n this.onCargarArchivo.emit(this.carpeta);\r\n }\r\n\r\n openVisorDoc(item: any): void {\r\n this.onOpenVisorDoc.emit(item);\r\n }\r\n\r\n openNewWindow(item: any): void {\r\n this.onOpenNewWindow.emit(item);\r\n }\r\n\r\n goBack(): void {\r\n this.onBack.emit();\r\n }\r\n\r\n onClickedCheckDelete(event: any, document: any): void {\r\n if (event.checked) this.docsEliminables.push(document);\r\n else this.docsEliminables = this.docsEliminables.filter(doc => doc !== document);\r\n }\r\n\r\n emitEliminarMasivo(): void {\r\n this.onEliminarMasivo.emit(this.docsEliminables);\r\n }\r\n\r\n toggleSelectAll(): void {\r\n this.items.forEach(item => (item.delete = this.allSelected));\r\n this.docsEliminables = this.allSelected ? [...this.items] : [];\r\n }\r\n\r\n // refresh(): void {\r\n // if (this.usesApi) {\r\n // this.loadFiles();\r\n // }\r\n // }\r\n\r\n onPageSizeChange(): void {\r\n this.first = 0;\r\n this.page = 1;\r\n this.loadFiles();\r\n }\r\n}\r\n","<div class=\"ff-layout\">\r\n <!-- Header fijo -->\r\n <div class=\"ff-header\">\r\n <div class=\"ff-back-row\" *ngIf=\"!useBreadcrumb\">\r\n <button pButton type=\"button\" icon=\"pi pi-arrow-left\" label=\"Volver\" (click)=\"goBack()\"></button>\r\n </div>\r\n\r\n <!-- Toolbar: búsqueda + botones de acción -->\r\n <div class=\"ff-toolbar\">\r\n <p-iconfield class=\"ff-toolbar__search\">\r\n <p-inputicon class=\"pi pi-search\" />\r\n <input type=\"text\" pInputText\r\n [placeholder]=\"'Buscar en ' + carpeta.label.replace('#toolbar=0&navpanes=0&statusbar=0','')\"\r\n [(ngModel)]=\"searchQuery\"\r\n (input)=\"onSearchInput()\"\r\n class=\"w-full\">\r\n </p-iconfield>\r\n\r\n <div class=\"ff-toolbar__actions\">\r\n <lib-upload-dialog *ngIf=\"carpeta?.reglas?.permisos?.cargarFront\"\r\n [selectedDocument]=\"carpeta\"\r\n (onUploaded)=\"fileChange($event)\"\r\n (loadFile)=\"cargarArchivo()\">\r\n </lib-upload-dialog>\r\n\r\n <button pButton type=\"button\"\r\n icon=\"pi pi-trash\"\r\n *ngIf=\"carpeta?.reglas?.permisos?.borrarFront\"\r\n (click)=\"emitEliminarMasivo()\"\r\n [disabled]=\"docsEliminables.length === 0\"\r\n class=\"p-button-outlined p-button-danger p-button-sm ff-btn-delete\">\r\n <span class=\"ff-btn-label\">Eliminar ({{docsEliminables.length}})</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Fila seleccionar todo / total archivos -->\r\n <div class=\"ff-select-row\" *ngIf=\"!loading && items.length > 0\">\r\n <div class=\"ff-select-row__left\">\r\n <p-checkbox *ngIf=\"carpeta?.reglas?.permisos?.borrarFront\"\r\n [binary]=\"true\"\r\n [(ngModel)]=\"allSelected\"\r\n (onChange)=\"toggleSelectAll()\">\r\n </p-checkbox>\r\n <span *ngIf=\"carpeta?.reglas?.permisos?.borrarFront\" class=\"ff-select-row__label\">Seleccionar todo</span>\r\n </div>\r\n <span class=\"ff-select-row__count\">{{totalRecords || items.length}} {{(totalRecords || items.length) === 1 ? 'archivo' : 'archivos'}}</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Contenido scrollable -->\r\n <div class=\"ff-file-list-wrapper\">\r\n <!-- Loading -->\r\n <div *ngIf=\"loading\" class=\"ff-loading\">\r\n <i class=\"pi pi-spin pi-spinner\" style=\"font-size: 2rem;\"></i>\r\n </div>\r\n\r\n <!-- Lista de archivos -->\r\n <div class=\"ff-file-list\" *ngIf=\"!loading\">\r\n <div class=\"ff-file-item\" *ngFor=\"let item of items\" (click)=\"openVisorDoc(item)\">\r\n <p-checkbox *ngIf=\"carpeta?.reglas?.permisos?.borrarFront\"\r\n [binary]=\"true\"\r\n [(ngModel)]=\"item.delete\"\r\n (onChange)=\"onClickedCheckDelete($event, item)\"\r\n (click)=\"$event.stopPropagation()\">\r\n </p-checkbox>\r\n\r\n <div class=\"ff-file-item__preview\">\r\n <embed *ngIf=\"carpeta.TipoArchivo == '2'\" class=\"ff-file-item__frame\"\r\n [src]=\"item.Path | safe\">\r\n <img *ngIf=\"carpeta.TipoArchivo == '1' && isMobile\" class=\"ff-file-item__frame\"\r\n src=\"https://macuna.tecfinanzas.com/Imagenes/pdf_icon.png\">\r\n <iframe *ngIf=\"carpeta.TipoArchivo == '1' && !isMobile\" class=\"ff-file-item__frame\"\r\n [src]=\"item.Path | safe\" frameborder=\"0\"></iframe>\r\n </div>\r\n\r\n <div class=\"ff-file-item__info\">\r\n <span class=\"ff-file-item__name\">{{item.label}}</span>\r\n <span class=\"ff-file-item__date\" *ngIf=\"item.FechaSubida && !isMobile\">Fecha Subida: {{item.FechaSubida | date:'dd/MM/yyyy HH:mm'}}</span>\r\n <span class=\"ff-file-item__date\" *ngIf=\"item.FechaSubida && isMobile\">{{item.FechaSubida | date:'dd/MM/yyyy HH:mm'}}</span>\r\n <i class=\"pi pi-external-link ff-file-item__open\"\r\n (click)=\"openNewWindow(item); $event.stopPropagation()\"\r\n role=\"button\" tabindex=\"0\"\r\n aria-label=\"Abrir en nueva ventana\"\r\n (keydown.enter)=\"openNewWindow(item); $event.stopPropagation()\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Sin resultados -->\r\n <div *ngIf=\"!loading && items.length === 0\" class=\"ff-empty\">\r\n Sin documentos cargados\r\n </div>\r\n </div>\r\n\r\n <!-- Footer fijo: paginación compacta -->\r\n <div class=\"ff-footer\" *ngIf=\"usesApi && totalRecords > 0\">\r\n <div class=\"ff-pagination\">\r\n <p-select [options]=\"pageSizeOptions\" optionLabel=\"label\" optionValue=\"value\"\r\n [(ngModel)]=\"pageSize\" (ngModelChange)=\"onPageSizeChange()\">\r\n </p-select>\r\n <p-paginator\r\n [first]=\"first\"\r\n [rows]=\"pageSize\"\r\n [totalRecords]=\"totalRecords\"\r\n (onPageChange)=\"onPageChange($event)\"\r\n [showCurrentPageReport]=\"true\"\r\n currentPageReportTemplate=\"{first} - {last} de {totalRecords}\"\r\n [showPageLinks]=\"false\"\r\n [showFirstLastIcon]=\"false\">\r\n </p-paginator>\r\n </div>\r\n </div>\r\n</div>\r\n","import { ApplicationRef, Component, ElementRef, EventEmitter, inject, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { ConfirmationService, MessageService, TreeNode } from 'primeng/api';\r\nimport { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport * as _ from \"lodash\";\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { PanelModule } from 'primeng/panel';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SafePipe } from './pipes/safe.pipe';\r\nimport { DOCUMENT_SERVICE, DocumentGatewayService } from './gateways/document.port';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { InputIcon } from 'primeng/inputicon';\r\nimport { IconField } from 'primeng/iconfield';\r\nimport { UploadDialogComponent } from './components/dialog/upload-dialog/upload-dialog.component';\r\nimport { FolderFilesComponent } from './components/folder-files/folder-files.component';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { SfDocumentsService } from './sf-documents.service';\r\nimport { finalize, switchMap, tap } from 'rxjs/operators';\r\nimport { DatePickerModule } from 'primeng/datepicker';\r\nimport { of } from 'rxjs';\r\nimport { SfDocumentNavigationState } from './models/navigation-state.model';\r\n\r\ndeclare var cordova: any;\r\ndeclare var window: any;\r\n\r\n@Component({\r\n selector: 'app-sf-documents',\r\n imports: [\r\n ToastModule, ButtonModule, ConfirmDialogModule, PanelModule, CheckboxModule,\r\n DialogModule, CommonModule, FormsModule, SafePipe, InputTextModule, InputIcon,\r\n IconField, FolderFilesComponent,\r\n DropdownModule, DatePickerModule\r\n ],\r\n templateUrl: './sf-documents.component.html',\r\n styleUrls: ['./sf-documents.component.scss'],\r\n providers: [DialogService, ConfirmationService],\r\n standalone: true\r\n})\r\nexport class SfDocumentsComponent implements OnDestroy, OnChanges {\r\n private documentsService = inject<DocumentGatewayService>(DOCUMENT_SERVICE);\r\n @Input() accion: string = \"\";\r\n @Input() entidad: string = \"\";\r\n @Input() ndoc: string = \"\";\r\n @Input() tdoc: string = \"\";\r\n @Input() tipo: string = \"\";\r\n //Información necesaria para cargar documentos de productos\r\n @Input() Kasociada: string = \"\";\r\n @Input() Producto: string = \"\";\r\n @Input() Solicitud: string = \"\";\r\n @Input() oSession: any;\r\n @Input() perfilDocumentos: any;\r\n @Input() subestado: string = '';\r\n @Input() isMobile: boolean = false;\r\n @Output() nextTabPapa: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n @Input() bAtras: boolean = false;\r\n @Input() bFinal: boolean = false;\r\n @Input() botones: boolean = true;\r\n @Input() aplFiltro: boolean = false;\r\n\r\n @Input() nmco: string[] = [];\r\n @Input() useBreadcrumb: boolean = false;\r\n\r\n @Input() usesApi: boolean = true;\r\n\r\n @Output() onNavigationChange = new EventEmitter<SfDocumentNavigationState>();\r\n\r\n @Input() server: string = \"\";\r\n valorFiltro: string = \"\";\r\n\r\n tab = 1;\r\n enProceso = false;\r\n carpetaSeleccionada: any;\r\n files: any;\r\n filesFilter: any;\r\n imagePathInput: any;\r\n modalReference: DynamicDialogRef | undefined;\r\n modalReference2: DynamicDialogRef | undefined;\r\n documentoSeleccionado: any;\r\n totalDocsEliminadosApi = { existoso: 0, fallido: 0 };\r\n file: any;\r\n urlDoc: any;\r\n pdfUrl: any;\r\n current_path: string = \"\";\r\n current_label: string = \"\";\r\n scanFileList = new Array<any>();\r\n displayPDF: boolean = false;\r\n\r\n @ViewChild('pdf', { read: ElementRef }) public panel!: ElementRef<any>;\r\n UsuarioNdoc: any;\r\n UsuarioTdoc: any;\r\n @Input() idKatios: any;\r\n\r\n displayGenerate = false;\r\n\r\n canGenerate = true;\r\n\r\n documentTypes: any[] = [];\r\n documentsToGenerate: any[] = [];\r\n documentsToGenerateMap: Record<string, any> = {};\r\n dynamicParams: any[] = [];\r\n dynamicValues: Record<string, any> = {};\r\n selectedDocType: string | null = null;\r\n selectedRange: string | null = null;\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer,\r\n private dialog: DialogService,\r\n public snackBar: MessageService,\r\n private appRef: ApplicationRef,\r\n private confirmationService: ConfirmationService,\r\n private documentService: SfDocumentsService\r\n ) { }\r\n\r\n // ngOnInit() {\r\n // if (this.oSession != null && this.oSession.UsuarioSistema.TDOC !== undefined && this.oSession.UsuarioSistema.NDOC !== undefined) {\r\n // this.idKatios = this.oSession.UsuarioSistema.IDKATIOS.trim();\r\n // this.perfilDocumentos = this.oSession.UsuarioSistema.PERDOCUMENTOS.trim();\r\n // }\r\n // if (this.tipo && this.perfilDocumentos) {\r\n // this.cargarParametros(this.tipo)\r\n // }\r\n // }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.files = [];\r\n this.filesFilter = [];\r\n this.imagePathInput = null;\r\n this.modalReference = undefined;\r\n this.modalReference2 = undefined;\r\n this.carpetaSeleccionada = null;\r\n this.documentoSeleccionado = null;\r\n this.totalDocsEliminadosApi = { existoso: 0, fallido: 0 };\r\n this.file = null;\r\n this.urlDoc = null;\r\n this.pdfUrl = null;\r\n this.current_path = \"\";\r\n this.current_label = \"\";\r\n this.scanFileList = new Array<any>();\r\n this.displayPDF = false;\r\n this.displayGenerate = false;\r\n this.canGenerate = true;\r\n this.documentTypes = [];\r\n this.documentsToGenerate = [];\r\n this.documentsToGenerateMap = {};\r\n this.dynamicParams = [];\r\n this.dynamicValues = {};\r\n this.selectedDocType = null;\r\n this.selectedRange = null;\r\n if (this.oSession != null && this.oSession.UsuarioSistema.TDOC !== undefined && this.oSession.UsuarioSistema.NDOC !== undefined) {\r\n this.idKatios = this.oSession.UsuarioSistema.IDKATIOS.trim();\r\n this.perfilDocumentos = this.oSession.UsuarioSistema.PERDOCUMENTOS.trim();\r\n }\r\n if (this.tipo && this.perfilDocumentos) {\r\n this.cargarParametros(this.tipo)\r\n }\r\n }\r\n\r\n cargarParametros(tipo: string) {\r\n if (tipo !== '1') return;\r\n\r\n this.documentService.loading = true;\r\n\r\n const data = {\r\n action: this.accion,\r\n entity: this.entidad,\r\n tdoc: this.tdoc,\r\n ndoc: this.ndoc,\r\n request: this.Solicitud,\r\n documentProfile: this.perfilDocumentos,\r\n product: this.Producto\r\n };\r\n\r\n this.documentsService.getFolders(this.idKatios, data).pipe(\r\n tap((response: any) => {\r\n let res = response.data;\r\n if (response.data.RESPUESTA) res = response.data.RESPUESTA;\r\n this.okCargoArbol(res);\r\n }),\r\n switchMap(() =>\r\n this.Solicitud ? this.documentsService.getDocumentsToGenerate(this.idKatios, this.Solicitud) : of(null)\r\n ),\r\n tap((resp: any) => {\r\n const list = resp?.data ?? []; // según tu JSON real\r\n this.documentsToGenerate = list;\r\n\r\n this.documentsToGenerateMap = {};\r\n list.forEach((d: any) => (this.documentsToGenerateMap[d.idDoc] = d));\r\n\r\n // dropdown: usa idDoc pero mantén objeto completo en map\r\n this.documentTypes = list.map((d: any) => ({\r\n label: d.description,\r\n code: d.idDoc\r\n }));\r\n }),\r\n finalize(() => {\r\n this.documentService.loading = false;\r\n })\r\n ).subscribe({\r\n error: (error: any) => {\r\n this.errorCargarArbol(error);\r\n }\r\n });\r\n\r\n this.tab = 1;\r\n this.documentoSeleccionado = null;\r\n this.emitNavigationState();\r\n }\r\n expandAll() {\r\n this.files.forEach((node: any) => {\r\n this.expandRecursive(node, true);\r\n });\r\n }\r\n\r\n private expandRecursive(node: TreeNode, isExpand: boolean) {\r\n node.expanded = isExpand;\r\n var objeto: any;\r\n objeto = node\r\n if (node.children && node.children?.length > 0) {\r\n node.children.forEach(childNode => {\r\n this.expandRecursive(childNode, isExpand);\r\n });\r\n } else if (objeto.Path !== undefined) {\r\n var path = 'Imagenes/' + objeto.Path + objeto.label\r\n var re = /[\\\\]/gi;\r\n path = path.replace(re, \"/\")\r\n objeto.Path = this.server + path\r\n //this.sanitizer.bypassSecurityTrustUrl(this.server + path)\r\n }\r\n }\r\n\r\n public okCargoArbol = (iArbol: any) => {\r\n if (!iArbol.CARPETA && iArbol.length === undefined) {\r\n iArbol = new Array(iArbol)\r\n }\r\n else if (iArbol.CARPETA.length === undefined) {\r\n iArbol = new Array(iArbol.CARPETA)\r\n }\r\n\r\n iArbol.forEach((element: any) => {\r\n this.convertirArrayChildren(element)\r\n });\r\n\r\n //\r\n this.filtrarTipoDocumento(iArbol)\r\n //\r\n this.files = iArbol;\r\n this.filesFilter = iArbol;\r\n this.expandAll();\r\n this.documentService.loading = false;\r\n }\r\n public errorCargarArbol = (iError: any) => {\r\n this.message(\"error\", \"Error al traer la información\", iError.message);\r\n this.documentService.loading = false;\r\n }\r\n\r\n // onClickedCheckDelete($event: any, document: any) {\r\n // if ($event.checked) this.docsEliminables.push(document);\r\n // else this.docsEliminables = this.docsEliminables.filter(doc => doc !== document);\r\n // }\r\n\r\n funcOkDelDocumentMasivo = (docsEliminables: any[]) => {\r\n this.totalDocsEliminadosApi.existoso += 1;\r\n if (this.totalDocsEliminadosApi.existoso + this.totalDocsEliminadosApi.fallido === docsEliminables.length) {\r\n this.cargarParametros(this.tipo);\r\n if (this.totalDocsEliminadosApi.fallido > 0) this.message(\"warn\", \"\", \"Algunos documentos no pudieron ser eliminados\");\r\n else this.message(\"success\", \"\", \"Documentos eliminados satisfactoriamente\");\r\n\r\n }\r\n }\r\n\r\n funcErrDelDocumentMasivo = (docsEliminables: any[]) => {\r\n this.totalDocsEliminadosApi.fallido += 1;\r\n if (this.totalDocsEliminadosApi.existoso + this.totalDocsEliminadosApi.fallido === docsEliminables.length) {\r\n this.cargarParametros(this.tipo);\r\n this.message(\"warn\", \"\", \"Algunos documentos no pudieron ser eliminados\");\r\n }\r\n }\r\n\r\n eliminarMasivo(docsEliminables: any[]) {\r\n this.confirmationService.confirm({\r\n message: `¿Desea eliminar los ${docsEliminables.length} documentos seleccionados?`,\r\n acceptLabel: 'Si',\r\n rejectLabel: 'No',\r\n accept: () => {\r\n this.documentService.loading = true\r\n this.totalDocsEliminadosApi = { existoso: 0, fallido: 0 };\r\n docsEliminables.forEach(doc => {\r\n let data = { \"code\": doc.codigo, \"status\": \"DES\" };\r\n this.documentsService.updateStatus(this.idKatios, data).subscribe({\r\n next: (response: any) => {\r\n this.funcOkDelDocumentMasivo(docsEliminables);\r\n },\r\n error: (error: any) => {\r\n this.documentService.loading = false;\r\n this.funcErrDelDocumentMasivo(docsEliminables);\r\n }\r\n });\r\n })\r\n }\r\n });\r\n }\r\n\r\n filtrarTipoDocumento(iArbol: any) {\r\n if (this.nmco.length !== 0) {\r\n iArbol.forEach((element: any) => {\r\n element.children = element.children.filter((child: any) => this.nmco.includes(child.NMCo));\r\n })\r\n }\r\n }\r\n\r\n convertirArrayChildren(node: any) {\r\n if (node.children === undefined) node.children = []\r\n else if (node.children.length == undefined) {\r\n node.children = new Array(node.children)\r\n }\r\n node.children.forEach((childNode: any) => {\r\n this.convertirArrayChildren(childNode);\r\n });\r\n\r\n }\r\n openBigModal(content: any) {\r\n this.modalReference = this.dialog.open(content, {\r\n width: '70%',\r\n modal: true,\r\n closable: true\r\n });\r\n this.modalReference.onClose.subscribe((result: any) => {\r\n //this.closeResult = `Closed with: ${result}`;\r\n });\r\n // this.modalReference.onHide.subscribe(() => {\r\n // //this.closeResult = `Dismissed ${this.getDismissReason(reason)}`;\r\n // });\r\n }\r\n\r\n openModal2(content: any) {\r\n this.modalReference2 = this.dialog.open(content, {});\r\n this.modalReference2.onClose.subscribe((result: any) => {\r\n //this.closeResult = `Closed with: ${result}`;\r\n });\r\n }\r\n\r\n\r\n // takePhotoClick() {\r\n // this.documentsService.openCamera(this.ok_openCamera, this.error_openCamera);\r\n // }\r\n /////Cuando se cargar archivos adjuntos\r\n fileChange(data: any) {\r\n const fileList = data.fileList;\r\n const tagValue = data.tagValue;\r\n this.file = fileList[0];\r\n this.imagePathInput = tagValue;\r\n this.generarData(fileList);\r\n }\r\n\r\n // ok_openCamera = (imageUri: any) => {\r\n // this.makeFileIntoBlob(imageUri)\r\n // .then((file: Blob) => {\r\n // this.appRef.tick();\r\n // if (file.size > 1000000) {\r\n // if (confirm(\"Este archivo es bastate pesado, le recomendamos bajar la calidad de la cámara. ¿Desea subir este archivo?\")) {\r\n // this.loadFileToList(file);\r\n // }\r\n // } else {\r\n // this.loadFileToList(file);\r\n // }\r\n // this.documentService.loading = false;\r\n // })\r\n // .catch((error: Error) => {\r\n // console.error('Error processing camera image:', error);\r\n // this.message(\"Error al procesar la imagen de la cámara\", \"Error\");\r\n // this.documentService.loading = false;\r\n // });\r\n // }\r\n\r\n loadFileToList(file: any) {\r\n\r\n setTimeout(() => {\r\n file[\"name\"] = \"scan\" + Date.now() + this.scanFileList.length + \".jpg\"\r\n this.scanFileList.push(file);\r\n this.scanFileList = this.scanFileList.slice();\r\n this.documentService.loading = false\r\n this.message(\"success\", \"\", \"Archivo cargado exitosamente\");\r\n\r\n this.appRef.tick();\r\n }, 200)\r\n }\r\n\r\n subirFotosScan() {\r\n this.generarData(this.scanFileList);\r\n }\r\n // error_openCamera = (err: any) => {\r\n // console.log(err);\r\n // this.message(\"No se pudo acceder a la camara\", \"Error\")\r\n // }\r\n\r\n noZonePatch(cb: () => void) {\r\n const orig = FileReader;\r\n const unpatched = ((window as any).FileReader as any).__zone_symbol__OriginalDelegate;\r\n (window as any).FileReader = unpatched;\r\n cb();\r\n (window as any).FileReader = orig;\r\n }\r\n\r\n makeFileIntoBlob(_imagePath: any): Promise<Blob> {\r\n this.documentService.loading = true;\r\n // INSTALL PLUGIN - cordova plugin add cordova-plugin-file\r\n return new Promise((resolve, reject) => {\r\n try {\r\n window.resolveLocalFileSystemURL(_imagePath, (fileEntry: any) => {\r\n fileEntry.file((resFile: any) => {\r\n this.noZonePatch(() => {//! Alert 1: Comentarear esta linea y una de de abajo para ambiente de prueba\r\n var reader = new FileReader();\r\n\r\n reader.onloadend = (evt: any) => {\r\n var imgBlob: any = new Blob([evt.target.result], { type: 'image/jpeg' });\r\n imgBlob.name = 'scan.jpg';\r\n resolve(imgBlob);\r\n };\r\n\r\n reader.onerror = (e) => {\r\n console.log('Failed file read: ' + e.toString());\r\n reject(e);\r\n };\r\n reader.readAsArrayBuffer(resFile);\r\n });//!Comentarear esta linea y una de de arriba para ambiente de prueba\r\n });\r\n }, (error: any) => {\r\n console.error('Error resolving file system URL:', error);\r\n reject(error);\r\n });\r\n } catch (ex) {\r\n console.error('Error in makeFileIntoBlob:', ex);\r\n reject(ex);\r\n }\r\n });\r\n }\r\n\r\n subirImagen(data: any, fileList: any) {\r\n this.documentService.loading = true;\r\n const formData: FormData = new FormData();\r\n var dataDocs;\r\n var sIdKatios = this.idKatios;\r\n dataDocs = { \"data\": data };\r\n formData.append('data', JSON.stringify(dataDocs));\r\n formData.append('merge', \"true\");\r\n\r\n for (let _i = 0; _i < fileList.length; _i++) {\r\n formData.append('files', fileList[_i], fileList[_i].name);\r\n }\r\n\r\n this.documentsService.uploadFiles(sIdKatios, formData).subscribe({\r\n next: (response: any) => {\r\n this.scanFileList = new Array<any>();\r\n if (this.modalReference2) {\r\n this.modalReference2.close();\r\n }\r\n if (this.modalReference) {\r\n this.modalReference.close();\r\n }\r\n this.message(\"success\", \"Felicidades\", \"Se almacenó el documento correctamente\");\r\n this.cargarParametros(this.tipo)\r\n this.documentService.loading = false;\r\n this.appRef.tick();\r\n },\r\n error: (err: any) => {\r\n this.documentService.loading = false;\r\n this.message(\"error\", \"Se presentaron inconvenientes almacenando el documento\", err.message);\r\n console.error(\"Error : \" + err);\r\n },\r\n });\r\n }\r\n\r\n generarData(fileList: any) {\r\n this.documentService.loading = true\r\n var sPath1;\r\n var dataClientes\r\n let sPaths = \"\";\r\n if (this.documentoSeleccionado.Tipo.trim().toUpperCase() == \"PERSONA\") {\r\n sPath1 = this.documentoSeleccionado.Tipo.trim() + \"\\\\\" + this.tdoc.trim() +\r\n \"\\\\\" + this.ndoc.trim() + \"\\\\Cliente\\\\\" + this.documentoSeleccionado.NMCo.trim();\r\n } else {\r\n //Kasociada\r\n //producto\r\n //Falta numero de solicitud\r\n\r\n\r\n\r\n sPath1 = this.documentoSeleccionado.Tipo.trim() + \"\\\\\" + this.Kasociada +\r\n \"\\\\\" + this.Producto + \"\\\\\" + this.Solicitud + \"\\\\\" + this.documentoSeleccionado.NMCo;\r\n }\r\n\r\n dataClientes = {\r\n \"Tipo\": this.documentoSeleccionado.Tipo,\r\n \"id\": \"1\",\r\n \"documento\": this.documentoSeleccionado.NMCo,\r\n \"tdoc\": this.tdoc.trim(),\r\n \"ndoc\": this.ndoc.trim(),\r\n \"IdProducto\": this.Solicitud,\r\n \"TipoProducto\": this.Producto,\r\n \"Kasociada\": this.Kasociada,\r\n \"archivoUpload\": fileList[0],\r\n \"nombre\": this.tdoc.trim() + '-' + this.ndoc.trim(),\r\n \"fileCargado\": fileList[0],\r\n \"pathArchivo\": sPath1,\r\n \"TipoArchivo\": this.documentoSeleccionado.TipoArchivo\r\n }\r\n sPaths = sPaths + sPath1 + \",\";\r\n this.subirImagen(dataClientes, fileList)\r\n }\r\n\r\n cargarArchivo(iNodo: any) {\r\n this.scanFileList = new Array<any>();\r\n this.documentoSeleccionado = iNodo;\r\n }\r\n\r\n async openDoc(item: any, pdfContent: any) {\r\n if (this.carpetaSeleccionada.TipoArchivo == '1' && this.isMobile) {\r\n cordova.InAppBrowser.open(item.Path, '_system', 'location=yes');\r\n } else {\r\n this.current_path = item.Path;\r\n this.current_label = item.label;\r\n this.openBigModal(pdfContent);\r\n }\r\n }\r\n\r\n openVisorDoc(item: any) {\r\n if (this.carpetaSeleccionada.TipoArchivo == '1' && this.isMobile) {//is mobile\r\n cordova.InAppBrowser.open(item.Path, '_system', 'location=yes');\r\n } else {\r\n this.current_path = item.Path;\r\n this.current_label = item.label;\r\n this.displayPDF = true;\r\n }\r\n }\r\n\r\n async openNewWindow(item: any) {\r\n window.open(item.Path, '_blank').focus();\r\n }\r\n\r\n async seleccionoDocs(iNodo: any) {\r\n var path = iNodo.Path + iNodo.label\r\n this.pdfUrl = \"//imagenes//\" + iNodo.idKatios + \"//\" + path;\r\n this.pdfUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.pdfUrl);\r\n this.gotoBottom();\r\n }\r\n\r\n\r\n message(severity: string, summary: string, message: any) {\r\n this.snackBar.add({\r\n severity: severity,\r\n summary: summary,\r\n detail: message,\r\n life: 4000\r\n });\r\n }\r\n\r\n\r\n public gotoBottom(): void {\r\n window.scrollBy(0, this.panel.nativeElement.scrollHeight)\r\n }\r\n\r\n\r\n get requestData(): any {\r\n return {\r\n action: this.accion,\r\n entity: this.entidad,\r\n tdoc: this.tdoc,\r\n ndoc: this.ndoc,\r\n request: this.Solicitud,\r\n documentProfile: this.perfilDocumentos,\r\n product: this.Producto\r\n };\r\n }\r\n\r\n public VerDetalleTab(items: any) {\r\n this.carpetaSeleccionada = items;\r\n this.totalDocsEliminadosApi = { existoso: 0, fallido: 0 };\r\n this.tab = 2;\r\n this.emitNavigationState();\r\n }\r\n\r\n goToTab(tab: any) {\r\n this.tab = tab;\r\n this.emitNavigationState();\r\n }\r\n\r\n private emitNavigationState(): void {\r\n if (!this.useBreadcrumb) return;\r\n const state: SfDocumentNavigationState = { tab: this.tab };\r\n if (this.tab === 2 && this.carpetaSeleccionada) {\r\n state.folderLabel = (this.carpetaSeleccionada.label || '')\r\n .replace('#toolbar=0&navpanes=0&statusbar=0', '');\r\n }\r\n this.onNavigationChange.emit(state);\r\n }\r\n\r\n next(iValor: any) {\r\n if (iValor < 0) {\r\n this.nextTabPapa.emit(iValor)\r\n } else {\r\n var respuesta = \"\"\r\n if (this.files) respuesta = this.valorDocumentosPendientes(this.files[0])\r\n\r\n if (respuesta == \"\") {\r\n this.nextTabPapa.emit(iValor)\r\n } else {\r\n this.message(\"warn\", \"Ups!\", respuesta);\r\n }\r\n }\r\n }\r\n\r\n valorDocumentosPendientes(carpetas: any) {\r\n\r\n var respuesta = \"\";\r\n if (carpetas.children) {\r\n carpetas.children.forEach((carpeta: any) => {\r\n\r\n if (carpeta.Obligatorio == 1 && (!carpeta.children || carpeta.children.length == 0)) respuesta = \"Falta \" + carpeta.label\r\n })\r\n }\r\n return respuesta\r\n\r\n }\r\n\r\n filtrarDocumentos() {\r\n this.filesFilter = _.cloneDeep(this.files);\r\n for (let i = 0; i < this.files.length; i++) {\r\n let node = [];\r\n for (let j = 0; j < this.files[i].children.length; j++) {\r\n let file = this.files[i].children[j];\r\n if (file.label.toLowerCase().indexOf(this.valorFiltro.toLowerCase()) == 0) node.push(file)\r\n }\r\n this.filesFilter[i].children = node;\r\n }\r\n }\r\n ngOnDestroy() {\r\n if (this.modalReference) {\r\n this.modalReference.close();\r\n }\r\n if (this.modalReference2) {\r\n this.modalReference2.close();\r\n }\r\n }\r\n openGenerateDialog() {\r\n this.selectedDocType = null;\r\n this.selectedRange = null;\r\n this.displayGenerate = true;\r\n }\r\n\r\n generateDocument() {\r\n if (!this.selectedDocType) return;\r\n\r\n // Validación mínima: si hay params, exigir que no estén vacíos\r\n for (const p of this.dynamicParams || []) {\r\n const key = p.name;\r\n const v = this.dynamicValues?.[key];\r\n if (v === null || v === undefined || v === '') {\r\n this.message('warn', '', `Falta el parámetro ${p.description}`);\r\n return;\r\n }\r\n }\r\n\r\n // construir params\r\n const paramsToSend: any = {};\r\n for (const p of this.dynamicParams || []) {\r\n const key = p.name;\r\n const raw = this.dynamicValues?.[key];\r\n\r\n paramsToSend[p.name] =\r\n (p.type || '').toLowerCase() === 'date'\r\n ? this.toYYYYMMDD(raw)\r\n : raw;\r\n }\r\n\r\n this.enProceso = true;\r\n\r\n const payload = {\r\n params: paramsToSend\r\n };\r\n this.documentsService.generateDocument(this.idKatios, this.selectedDocType, this.Solicitud, payload).subscribe({\r\n next: () => {\r\n this.displayGenerate = false;\r\n this.message('success', '', 'Documento en generación');\r\n this.cargarParametros(this.tipo);\r\n this.enProceso = false;\r\n },\r\n error: (err: any) => {\r\n this.message('error', 'No se pudo generar el documento', err?.message || err);\r\n this.enProceso = false;\r\n }\r\n });\r\n }\r\n private toYYYYMMDD(value: any): string | null {\r\n if (!value) return null;\r\n const d = value instanceof Date ? value : new Date(value);\r\n if (isNaN(d.getTime())) return null;\r\n\r\n // ISO: 2025-12-19T05:00:00.000Z -> 2025-12-19\r\n return d.toISOString().slice(0, 10);\r\n }\r\n onDocTypeChange() {\r\n const doc = this.selectedDocType ? this.documentsToGenerateMap[this.selectedDocType] : null;\r\n\r\n this.dynamicParams = doc?.params ?? [];\r\n this.dynamicValues = {}; // reset valores\r\n\r\n // valores default opcionales\r\n for (const p of this.dynamicParams) {\r\n const key = p.name;\r\n this.dynamicValues[key] = null;\r\n }\r\n }\r\n\r\n}\r\n","<div class=\"sf-doc-layout\">\r\n <div class=\"sf-doc-fixed\">\r\n <div class=\"buttons\" *ngIf=\"botones\">\r\n <div class=\"div-table-col50\" style=\"text-align: center\" *ngIf=\"bAtras\">\r\n <button pButton type=\"button\" label=\"Atras\" icon=\"pi pi-arrow-left\" (click)=\"next(-1)\"></button>\r\n </div>\r\n <div class=\"div-table-col50\" style=\"text-align: center\" *ngIf=\"!bFinal && botones\">\r\n <button pButton type=\"button\" label=\"Siguiente\" icon=\"pi pi-arrow-right\" (click)=\"next(1)\"></button>\r\n </div>\r\n <div class=\"div-table-col50\" *ngIf=\"bFinal\">\r\n <button pButton type=\"button\" label=\"Finalizar\" icon=\"pi pi-home\" (click)=\"next(0)\"></button>\r\n </div>\r\n </div>\r\n <!-- Toolbar superior (solo tab 1) -->\r\n <div *ngIf=\"tab==1\" class=\"doc-toolbar\">\r\n <div class=\"doc-toolbar-left\" *ngIf=\"aplFiltro\">\r\n <p-iconfield>\r\n <p-inputicon class=\"pi pi-search\" />\r\n <input type=\"text\" pInputText placeholder=\"Buscar carpeta...\"\r\n [(ngModel)]=\"valorFiltro\"\r\n (keyup)=\"filtrarDocumentos()\"\r\n class=\"w-full\">\r\n </p-iconfield>\r\n </div>\r\n\r\n <div class=\"doc-toolbar-right\" *ngIf=\"(documentTypes.length > 0)\" >\r\n <button pButton type=\"button\"\r\n label=\"Generar documento\"\r\n icon=\"pi pi-plus\"\r\n class=\"p-button-sm\"\r\n (click)=\"openGenerateDialog()\"\r\n [disabled]=\"enProceso || !canGenerate\">\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <p-confirmDialog header=\"Atencion\" icon=\"pi pi-exclamation-triangle\"></p-confirmDialog>\r\n <div class=\"sf-doc-scrollable\" *ngIf=\"tab==1\">\r\n <ng-container *ngFor=\"let carpeta of filesFilter\">\r\n <div class=\"folder-list\">\r\n <div class=\"folder-item\" *ngFor=\"let item of carpeta.children\" (click)=\"VerDetalleTab(item)\">\r\n <i class=\"pi pi-folder folder-item__icon\" [ngStyle]=\"{'color': (item.children?.length > 0 || item.fileCount > 0) ? 'green':'red' }\"></i>\r\n <div class=\"folder-item__info\">\r\n <span class=\"folder-item__name\">{{item.label}}</span>\r\n <span class=\"folder-item__count\" *ngIf=\"item.children?.length > 0\">{{item.children.length}} {{item.children.length === 1 ? 'archivo' : 'archivos'}}</span>\r\n <span class=\"folder-item__count\" *ngIf=\"(!item.children || item.children.length === 0) && item.fileCount\">{{item.fileCount}} {{item.fileCount === 1 ? 'archivo' : 'archivos'}}</span>\r\n <span class=\"folder-item__count\" *ngIf=\"(!item.children || item.children.length === 0) && !item.fileCount\">0 archivos</span>\r\n </div>\r\n <i class=\"pi pi-chevron-right folder-item__arrow\"></i>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"botones\">\r\n <div class=\"buttons\">\r\n <div class=\"div-table-col50\" style=\"text-align: center\" *ngIf=\"bAtras\">\r\n <button pButton type=\"button\" label=\"Atras\" icon=\"pi pi-arrow-left\" (click)=\"next(-1)\"></button>\r\n </div>\r\n <div class=\"div-table-col50\" style=\"text-align: center\" *ngIf=\"!bFinal && botones\">\r\n <button pButton type=\"button\" label=\"Siguiente\" icon=\"pi pi-arrow-right\" (click)=\"next(1)\"></button>\r\n </div>\r\n <div class=\"div-table-col50\" *ngIf=\"bFinal\">\r\n <button pButton type=\"button\" label=\"Finalizar\" icon=\"pi pi-home\" (click)=\"next(0)\"></button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"sf-doc-scrollable sf-doc-scrollable--files\" *ngIf=\"tab==2\">\r\n <lib-folder-files\r\n [carpeta]=\"carpetaSeleccionada\"\r\n [isMobile]=\"isMobile\"\r\n [idKatios]=\"idKatios\"\r\n [server]=\"server\"\r\n [subestado]=\"subestado\"\r\n [requestData]=\"requestData\"\r\n [useBreadcrumb]=\"useBreadcrumb\"\r\n [usesApi]=\"usesApi\"\r\n (onFileChange)=\"fileChange($event)\"\r\n (onCargarArchivo)=\"cargarArchivo($event)\"\r\n (onOpenVisorDoc)=\"openVisorDoc($event)\"\r\n (onOpenNewWindow)=\"openNewWindow($event)\"\r\n (onEliminarMasivo)=\"eliminarMasivo($event)\"\r\n (onBack)=\"goToTab('1')\">\r\n </lib-folder-files>\r\n </div>\r\n</div>\r\n\r\n<p-dialog *ngIf=\"displayPDF\" [(visible)]=\"displayPDF\"\r\n header=\"{{current_label.replace('#toolbar=0&navpanes=0&statusbar=0','')}}\" [modal]=\"true\" [style]=\"{width: '70vw'}\">\r\n <embed *ngIf=\"carpetaSeleccionada.TipoArchivo == '2'\" [src]=\"current_path | safe\"\r\n style=\"width:100%; min-height: 600px\">\r\n <iframe *ngIf=\"carpetaSeleccionada.TipoArchivo == '1'\" style=\"width:100%; min-height: 600px\"\r\n [src]=\"current_path | safe\"></iframe>\r\n</p-dialog>\r\n\r\n\r\n<ng-template #pdfContent>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\" id=\"modal-basic-title\">{{current_label.replace('#toolbar=0&navpanes=0&statusbar=0','')}}\r\n </h4>\r\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"modalReference?.close()\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n <div>\r\n <embed *ngIf=\"carpetaSeleccionada.TipoArchivo == '2'\" [src]=\"current_path | safe\"\r\n style=\"width:100%; min-height: 600px\">\r\n <iframe *ngIf=\"carpetaSeleccionada.TipoArchivo == '1'\" style=\"width:100%; min-height: 600px\"\r\n [src]=\"current_path | safe\"></iframe>\r\n\r\n </div>\r\n</ng-template>\r\n\r\n<!-- <ng-template #scanContent>\r\n <div class=\"div-table\">\r\n <div class=\"div-table-row\" style=\"text-align: center\">\r\n <h4>Escanear documentos</h4>\r\n </div>\r\n <div class=\"div-table-row\" style=\"text-align: center\">\r\n Archivos cargados: <h4>{{scanFileList.length}}</h4>\r\n </div>\r\n <div class=\"div-table-row\" style=\"text-align: center\">\r\n <label (click)=\"takePhotoClick()\" class=\"btn\">\r\n <mat-icon style=\"font-size: 2.5em; color:#0056b2\">add_to_photos</mat-icon>\r\n </label>\r\n\r\n <label *ngIf=\"scanFileList.length != 0\" (click)=\"subirFotosScan()\" class=\"btn\">\r\n <mat-icon style=\"font-size: 2.5em; color:#0056b2\">share</mat-icon>\r\n </label>\r\n </div>\r\n </div>\r\n</ng-template> -->\r\n<p-dialog header=\"Generar documento\"\r\n [(visible)]=\"displayGenerate\"\r\n [modal]=\"true\"\r\n [closable]=\"true\"\r\n [style]=\"{width: isMobile ? '95vw' : '520px'}\">\r\n\r\n <div class=\"gen-form\">\r\n <!-- Tipo de documento -->\r\n <div class=\"gen-field\">\r\n <label class=\"gen-label\">Tipo de documento</label>\r\n <p-dropdown\r\n class=\"gen-control\"\r\n [options]=\"documentTypes\"\r\n optionLabel=\"label\"\r\n optionValue=\"code\"\r\n [(ngModel)]=\"selectedDocType\"\r\n placeholder=\"Seleccione un tipo\"\r\n appendTo=\"body\"\r\n (onChange)=\"onDocTypeChange()\">\r\n </p-dropdown>\r\n </div>\r\n\r\n <!-- Parámetros dinámicos -->\r\n <div class=\"gen-section\" *ngIf=\"dynamicParams.length\">\r\n <div class=\"gen-field\" *ngFor=\"let p of dynamicParams\">\r\n <label class=\"gen-label\">\r\n {{ p.description }}\r\n <span class=\"gen-required\" *ngIf=\"p.required\">*</span>\r\n </label>\r\n\r\n <!-- Date -->\r\n <p-datepicker\r\n *ngIf=\"(p.type || '').toLowerCase() === 'date'\"\r\n class=\"gen-control\"\r\n [(ngModel)]=\"dynamicValues[p.name]\"\r\n [showIcon]=\"true\"\r\n appendTo=\"body\"\r\n dateFormat=\"yy-mm-dd\">\r\n </p-datepicker>\r\n\r\n <!-- String -->\r\n <input\r\n *ngIf=\"(p.type || '').toLowerCase() === 'nvarchar' || (p.type || '').toLowerCase() === 'string'\"\r\n pInputText\r\n class=\"gen-control\"\r\n [(ngModel)]=\"dynamicValues[p.name]\"\r\n placeholder=\"Ingrese un valor\" />\r\n\r\n <!-- Number -->\r\n <p-inputNumber\r\n *ngIf=\"['int','decimal','number'].includes((p.type || '').toLowerCase())\"\r\n class=\"gen-control\"\r\n [(ngModel)]=\"dynamicValues[p.name]\"\r\n >\r\n </p-inputNumber>\r\n\r\n <!-- Boolean -->\r\n <div class=\"gen-control gen-checkbox\"\r\n *ngIf=\"['boolean','bit','bool'].includes((p.type || '').toLowerCase())\">\r\n <p-checkbox\r\n [binary]=\"true\"\r\n [(ngModel)]=\"dynamicValues[p.name]\">\r\n </p-checkbox>\r\n <span class=\"gen-checkbox-label\">Sí</span>\r\n </div>\r\n\r\n <!-- helper opcional -->\r\n <small class=\"gen-help\" *ngIf=\"p.help\">{{ p.help }}</small>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-template pTemplate=\"footer\">\r\n <button pButton type=\"button\" label=\"Cancelar\" class=\"p-button-text\"\r\n (click)=\"displayGenerate=false\"></button>\r\n\r\n <button pButton type=\"button\" label=\"Generar\" icon=\"pi pi-cog\"\r\n (click)=\"generateDocument()\"\r\n [disabled]=\"!selectedDocType || enProceso\">\r\n </button>\r\n </ng-template>\r\n</p-dialog>\r\n\r\n","/*\r\n * Public API Surface of sf-documents\r\n */\r\n\r\nexport * from './lib/sf-documents.service';\r\nexport * from './lib/sf-documents.component';\r\nexport * from './lib/gateways/document.port';\r\nexport * from './lib/components/folder-files/folder-files.component';\r\nexport * from './lib/models/navigation-state.model';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SfDocumentsService","i4","i2","i3","i4.SfDocumentsService","i5","i7","i8","i10","i11"],"mappings":"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"}
@@ -56,7 +56,6 @@ export declare class FolderFilesComponent implements OnChanges, OnDestroy {
56
56
  onClickedCheckDelete(event: any, document: any): void;
57
57
  emitEliminarMasivo(): void;
58
58
  toggleSelectAll(): void;
59
- refresh(): void;
60
59
  onPageSizeChange(): void;
61
60
  static ɵfac: i0.ɵɵFactoryDeclaration<FolderFilesComponent, never>;
62
61
  static ɵcmp: i0.ɵɵComponentDeclaration<FolderFilesComponent, "lib-folder-files", never, { "carpeta": { "alias": "carpeta"; "required": false; }; "isMobile": { "alias": "isMobile"; "required": false; }; "idKatios": { "alias": "idKatios"; "required": false; }; "server": { "alias": "server"; "required": false; }; "subestado": { "alias": "subestado"; "required": false; }; "requestData": { "alias": "requestData"; "required": false; }; "useBreadcrumb": { "alias": "useBreadcrumb"; "required": false; }; "usesApi": { "alias": "usesApi"; "required": false; }; }, { "onFileChange": "onFileChange"; "onCargarArchivo": "onCargarArchivo"; "onEliminarMasivo": "onEliminarMasivo"; "onOpenVisorDoc": "onOpenVisorDoc"; "onOpenNewWindow": "onOpenNewWindow"; "onBack": "onBack"; }, never, never, true, never>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sf-documents",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "peerDependencies": {
5
5
  "@angular/animations": "^19.2.0",
6
6
  "@angular/common": "^19.2.0",