infodocviewdoc 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +355 -0
- package/fesm2022/infodocviewdoc.mjs +206 -0
- package/fesm2022/infodocviewdoc.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/button/button.component.d.ts +12 -0
- package/lib/document-viewer/pages/pdf-viewer-page/pdf-viewer.component.d.ts +23 -0
- package/lib/document-viewer/services/file.service.d.ts +16 -0
- package/lib/ui-components.component.d.ts +5 -0
- package/lib/ui-components.service.d.ts +6 -0
- package/package.json +43 -0
- package/public-api.d.ts +4 -0
package/README.md
ADDED
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
# @infodocnpm/ui-components
|
|
2
|
+
|
|
3
|
+
Biblioteca de componentes UI para SGDEA (Sistema de Gestión Documental Electrónico de Archivo).
|
|
4
|
+
|
|
5
|
+
## Instalación
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @infodocnpm/ui-components
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Documentación Completa
|
|
12
|
+
|
|
13
|
+
Para la documentación completa de instalación e integración de metadatos, consulta el archivo:
|
|
14
|
+
|
|
15
|
+
**`MANUAL_INSTALACION_METADATOS.md`** en la raíz del repositorio `sgdea-component-library`.
|
|
16
|
+
|
|
17
|
+
Este manual contiene:
|
|
18
|
+
- Guía paso a paso de instalación
|
|
19
|
+
- Configuración de rutas y secciones
|
|
20
|
+
- Integración en modo inline (recomendado)
|
|
21
|
+
- Ejemplos de código completos
|
|
22
|
+
- Validación de campos obligatorios
|
|
23
|
+
- Vinculación de metadatos con registros
|
|
24
|
+
|
|
25
|
+
## Componente: Metadata Crosscutting
|
|
26
|
+
|
|
27
|
+
Componente para gestionar y mostrar formularios de metadatos de manera inline o en modal.
|
|
28
|
+
|
|
29
|
+
**IMPORTANTE:** Consulta el `MANUAL_INSTALACION_METADATOS.md` para ver la documentación completa y actualizada.
|
|
30
|
+
|
|
31
|
+
### Modo Inline (Recomendado)
|
|
32
|
+
|
|
33
|
+
El componente puede renderizarse directamente dentro de un formulario sin necesidad de un modal.
|
|
34
|
+
|
|
35
|
+
#### 1. Importar el componente
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
import { MetadataCrosscuttingComponent } from '@infodocnpm/ui-components';
|
|
39
|
+
|
|
40
|
+
@Component({
|
|
41
|
+
selector: 'app-my-component',
|
|
42
|
+
standalone: true,
|
|
43
|
+
imports: [
|
|
44
|
+
MetadataCrosscuttingComponent,
|
|
45
|
+
// ... otros imports
|
|
46
|
+
],
|
|
47
|
+
// ...
|
|
48
|
+
})
|
|
49
|
+
export class MyComponent {
|
|
50
|
+
// ...
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
#### 2. Usar en el template
|
|
55
|
+
|
|
56
|
+
```html
|
|
57
|
+
<sgdea-metadata-crosscutting
|
|
58
|
+
#metadataComponent
|
|
59
|
+
[inlineMode]="true"
|
|
60
|
+
[autoLoad]="true"
|
|
61
|
+
[sectionFormId]="sectionFormId"
|
|
62
|
+
[apiUrl]="metadataApiUrl"
|
|
63
|
+
[createApiUrl]="metadataCreateApiUrl"
|
|
64
|
+
[registerId]="null"
|
|
65
|
+
[initialFormData]="initialMetadataData || null"
|
|
66
|
+
(saveModal)="onMetadataSave($event)">
|
|
67
|
+
</sgdea-metadata-crosscutting>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
#### 3. Configurar en el componente TypeScript
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
import { ViewChild } from '@angular/core';
|
|
74
|
+
import { MetadataCrosscuttingComponent, MetadataFormData, MetadataModalFormStructure } from '@infodocnpm/ui-components';
|
|
75
|
+
|
|
76
|
+
export class MyComponent {
|
|
77
|
+
@ViewChild('metadataComponent') metadataComponent?: MetadataCrosscuttingComponent;
|
|
78
|
+
|
|
79
|
+
sectionFormId = 'your-section-form-id';
|
|
80
|
+
metadataApiUrl = 'https://your-api.com/api/v1/metadata/template/get-all-metadata-for-modal';
|
|
81
|
+
metadataCreateApiUrl = 'https://your-api.com/api/v1/metadata/value-metadata/create';
|
|
82
|
+
initialMetadataData: MetadataFormData[] | null = null;
|
|
83
|
+
|
|
84
|
+
// Obtener datos actuales del formulario
|
|
85
|
+
getCurrentMetadataData(): MetadataFormData[] {
|
|
86
|
+
if (this.metadataComponent) {
|
|
87
|
+
return this.metadataComponent.getCurrentFormData();
|
|
88
|
+
}
|
|
89
|
+
return [];
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Guardar datos (opcional, si quieres guardar localmente)
|
|
93
|
+
onMetadataSave(data: { formData: MetadataFormData[], formStructure: MetadataModalFormStructure | null }): void {
|
|
94
|
+
// Guardar localmente si es necesario
|
|
95
|
+
console.log('Metadata saved:', data);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
#### 4. Vincular metadatos después de crear un registro
|
|
101
|
+
|
|
102
|
+
```typescript
|
|
103
|
+
import { ValueMetadataCreateMapper, ValueMetadataCreateRequestDto } from '@infodocnpm/ui-components';
|
|
104
|
+
import { HttpClient } from '@angular/common/http';
|
|
105
|
+
import { forkJoin, Observable, of } from 'rxjs';
|
|
106
|
+
import { catchError, map } from 'rxjs/operators';
|
|
107
|
+
|
|
108
|
+
export class MyComponent {
|
|
109
|
+
constructor(private http: HttpClient) {}
|
|
110
|
+
|
|
111
|
+
// Después de crear tu registro (ej: préstamo, expediente, etc.)
|
|
112
|
+
linkMetadataToRegister(registerId: string): void {
|
|
113
|
+
const metadataData = this.metadataComponent?.getCurrentFormData() || [];
|
|
114
|
+
|
|
115
|
+
if (metadataData.length === 0) {
|
|
116
|
+
return; // No hay datos para vincular
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const apiUrl = 'https://your-api.com/api/v1/metadata/value-metadata/create';
|
|
120
|
+
const sectionFormId = this.sectionFormId;
|
|
121
|
+
|
|
122
|
+
// Construir el request usando el mapper
|
|
123
|
+
const requestPayload: ValueMetadataCreateRequestDto = ValueMetadataCreateMapper.toRequestDto(
|
|
124
|
+
metadataData,
|
|
125
|
+
sectionFormId,
|
|
126
|
+
registerId,
|
|
127
|
+
null // formStructure - opcional
|
|
128
|
+
);
|
|
129
|
+
|
|
130
|
+
// Enviar al backend
|
|
131
|
+
this.http.post(apiUrl, requestPayload).subscribe({
|
|
132
|
+
next: (response) => {
|
|
133
|
+
console.log('Metadata vinculado exitosamente:', response);
|
|
134
|
+
},
|
|
135
|
+
error: (error) => {
|
|
136
|
+
console.error('Error al vincular metadata:', error);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Modo Modal (Legacy)
|
|
144
|
+
|
|
145
|
+
El componente también puede mostrarse en un modal (modo legacy).
|
|
146
|
+
|
|
147
|
+
```html
|
|
148
|
+
<sgdea-metadata-crosscutting
|
|
149
|
+
[isVisible]="isModalVisible"
|
|
150
|
+
[modalTitle]="'Metadatos del Documento'"
|
|
151
|
+
[sectionFormId]="sectionFormId"
|
|
152
|
+
[apiUrl]="metadataApiUrl"
|
|
153
|
+
[createApiUrl]="metadataCreateApiUrl"
|
|
154
|
+
[registerId]="registerId"
|
|
155
|
+
[initialFormData]="initialMetadataData"
|
|
156
|
+
(closeModal)="closeModal()"
|
|
157
|
+
(saveModal)="onMetadataSave($event)">
|
|
158
|
+
</sgdea-metadata-crosscutting>
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Propiedades del Componente
|
|
162
|
+
|
|
163
|
+
| Propiedad | Tipo | Descripción |
|
|
164
|
+
|-----------|------|-------------|
|
|
165
|
+
| `inlineMode` | `boolean` | Si es `true`, muestra el formulario inline (sin modal). Por defecto: `false` |
|
|
166
|
+
| `autoLoad` | `boolean` | Si es `true`, carga automáticamente los metadatos al inicializar. Por defecto: `false` |
|
|
167
|
+
| `sectionFormId` | `string \| null` | ID de la sección de formulario de metadatos |
|
|
168
|
+
| `apiUrl` | `string \| null` | URL completa del endpoint para obtener la estructura de metadatos |
|
|
169
|
+
| `createApiUrl` | `string \| null` | URL completa del endpoint para crear/vincular metadatos |
|
|
170
|
+
| `registerId` | `string \| null` | ID del registro al que se vincularán los metadatos (usado en modo modal) |
|
|
171
|
+
| `initialFormData` | `MetadataFormData[] \| null` | Datos iniciales para poblar el formulario |
|
|
172
|
+
| `isVisible` | `boolean` | Muestra/oculta el modal (solo en modo modal). Por defecto: `false` |
|
|
173
|
+
| `modalTitle` | `string` | Título del modal (solo en modo modal). Por defecto: `'Metadatos del Documento'` |
|
|
174
|
+
|
|
175
|
+
### Eventos
|
|
176
|
+
|
|
177
|
+
| Evento | Tipo | Descripción |
|
|
178
|
+
|--------|------|-------------|
|
|
179
|
+
| `saveModal` | `EventEmitter<{ formData: MetadataFormData[], formStructure: MetadataModalFormStructure \| null }>` | Se emite cuando se guarda el formulario |
|
|
180
|
+
| `closeModal` | `EventEmitter<void>` | Se emite cuando se cierra el modal (solo modo modal) |
|
|
181
|
+
|
|
182
|
+
### Métodos Públicos
|
|
183
|
+
|
|
184
|
+
#### `getCurrentFormData(): MetadataFormData[]`
|
|
185
|
+
|
|
186
|
+
Obtiene los datos actuales del formulario sin validar ni guardar. Útil para obtener los valores actuales antes de vincular al registro.
|
|
187
|
+
|
|
188
|
+
```typescript
|
|
189
|
+
const currentData = this.metadataComponent?.getCurrentFormData();
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Validación de Campos Obligatorios
|
|
193
|
+
|
|
194
|
+
Para validar que todos los campos obligatorios estén diligenciados antes de crear un registro:
|
|
195
|
+
|
|
196
|
+
```typescript
|
|
197
|
+
import { MetadataValidationService, ValidateMissingFieldsResponseDto } from '@infodocnpm/ui-components';
|
|
198
|
+
|
|
199
|
+
export class MyComponent {
|
|
200
|
+
constructor(private metadataValidationService: MetadataValidationService) {}
|
|
201
|
+
|
|
202
|
+
validateRequiredFields(): boolean {
|
|
203
|
+
const currentData = this.metadataComponent?.getCurrentFormData() || [];
|
|
204
|
+
const sectionFormId = this.sectionFormId;
|
|
205
|
+
|
|
206
|
+
// Obtener secciones con campos obligatorios
|
|
207
|
+
const apiUrl = 'https://your-api.com/api/v1/metadata/template/get-all-metadata-for-modal';
|
|
208
|
+
|
|
209
|
+
this.metadataValidationService.validateRequiredFields(apiUrl, [sectionFormId])
|
|
210
|
+
.subscribe({
|
|
211
|
+
next: (response) => {
|
|
212
|
+
if (response.sectionsWithRequiredFields.length > 0) {
|
|
213
|
+
// Hay campos obligatorios, validar que estén diligenciados
|
|
214
|
+
const metadataDataMap = new Map();
|
|
215
|
+
metadataDataMap.set(sectionFormId, {
|
|
216
|
+
formData: currentData,
|
|
217
|
+
formStructure: null // Obtener de la estructura cargada
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
const validationResult = this.metadataValidationService.validateMissingRequiredFields(
|
|
221
|
+
response.sectionsWithRequiredFields,
|
|
222
|
+
metadataDataMap
|
|
223
|
+
);
|
|
224
|
+
|
|
225
|
+
if (validationResult.hasMissingFields) {
|
|
226
|
+
console.error('Faltan campos obligatorios:', validationResult.missingSections);
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return true;
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
return false;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Ejemplo Completo de Integración
|
|
240
|
+
|
|
241
|
+
```typescript
|
|
242
|
+
import { Component, ViewChild } from '@angular/core';
|
|
243
|
+
import { MetadataCrosscuttingComponent, MetadataFormData, MetadataModalFormStructure, ValueMetadataCreateMapper, ValueMetadataCreateRequestDto } from '@infodocnpm/ui-components';
|
|
244
|
+
import { HttpClient } from '@angular/common/http';
|
|
245
|
+
|
|
246
|
+
@Component({
|
|
247
|
+
selector: 'app-loan-form',
|
|
248
|
+
standalone: true,
|
|
249
|
+
imports: [MetadataCrosscuttingComponent],
|
|
250
|
+
template: `
|
|
251
|
+
<form>
|
|
252
|
+
<!-- Campos del formulario principal -->
|
|
253
|
+
|
|
254
|
+
<!-- Metadatos inline -->
|
|
255
|
+
<sgdea-metadata-crosscutting
|
|
256
|
+
#metadataComponent
|
|
257
|
+
[inlineMode]="true"
|
|
258
|
+
[autoLoad]="true"
|
|
259
|
+
[sectionFormId]="'DETAIL_SECTION'"
|
|
260
|
+
[apiUrl]="metadataApiUrl"
|
|
261
|
+
[createApiUrl]="metadataCreateApiUrl"
|
|
262
|
+
(saveModal)="onMetadataSave($event)">
|
|
263
|
+
</sgdea-metadata-crosscutting>
|
|
264
|
+
|
|
265
|
+
<button (click)="createLoan()">Crear Préstamo</button>
|
|
266
|
+
</form>
|
|
267
|
+
`
|
|
268
|
+
})
|
|
269
|
+
export class LoanFormComponent {
|
|
270
|
+
@ViewChild('metadataComponent') metadataComponent?: MetadataCrosscuttingComponent;
|
|
271
|
+
|
|
272
|
+
metadataApiUrl = 'https://api.example.com/api/v1/metadata/template/get-all-metadata-for-modal';
|
|
273
|
+
metadataCreateApiUrl = 'https://api.example.com/api/v1/metadata/value-metadata/create';
|
|
274
|
+
|
|
275
|
+
constructor(private http: HttpClient) {}
|
|
276
|
+
|
|
277
|
+
onMetadataSave(data: { formData: MetadataFormData[], formStructure: MetadataModalFormStructure | null }): void {
|
|
278
|
+
// Guardar localmente si es necesario
|
|
279
|
+
console.log('Metadata guardado:', data);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
createLoan(): void {
|
|
283
|
+
// 1. Crear el préstamo
|
|
284
|
+
this.http.post('https://api.example.com/api/v1/loans', loanData)
|
|
285
|
+
.subscribe({
|
|
286
|
+
next: (response: any) => {
|
|
287
|
+
const loanId = response.idPrestamo;
|
|
288
|
+
|
|
289
|
+
// 2. Vincular metadatos al préstamo
|
|
290
|
+
this.linkMetadataToLoan(loanId);
|
|
291
|
+
}
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
linkMetadataToLoan(loanId: string): void {
|
|
296
|
+
const metadataData = this.metadataComponent?.getCurrentFormData() || [];
|
|
297
|
+
|
|
298
|
+
if (metadataData.length === 0) {
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
const requestPayload: ValueMetadataCreateRequestDto = ValueMetadataCreateMapper.toRequestDto(
|
|
303
|
+
metadataData,
|
|
304
|
+
'DETAIL_SECTION',
|
|
305
|
+
loanId,
|
|
306
|
+
null
|
|
307
|
+
);
|
|
308
|
+
|
|
309
|
+
this.http.post(this.metadataCreateApiUrl, requestPayload).subscribe({
|
|
310
|
+
next: () => {
|
|
311
|
+
console.log('Metadatos vinculados exitosamente');
|
|
312
|
+
},
|
|
313
|
+
error: (error) => {
|
|
314
|
+
console.error('Error al vincular metadatos:', error);
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
## Building
|
|
322
|
+
|
|
323
|
+
Para construir la librería localmente:
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
npm run build:lib
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
Los artefactos de compilación se guardarán en el directorio `dist/`.
|
|
330
|
+
|
|
331
|
+
### Publicar la Librería
|
|
332
|
+
|
|
333
|
+
Una vez construida la librería:
|
|
334
|
+
|
|
335
|
+
1. Navegar al directorio `dist`:
|
|
336
|
+
```bash
|
|
337
|
+
cd dist/ui-components
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
2. Ejecutar `npm publish` para publicar la librería en el registro de npm:
|
|
341
|
+
```bash
|
|
342
|
+
npm publish
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
## Running unit tests
|
|
346
|
+
|
|
347
|
+
Para ejecutar las pruebas unitarias:
|
|
348
|
+
|
|
349
|
+
```bash
|
|
350
|
+
npm test
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
## Recursos Adicionales
|
|
354
|
+
|
|
355
|
+
Para más información sobre Angular CLI, visita [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli).
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable, Component, EventEmitter, Output, Input, signal } from '@angular/core';
|
|
3
|
+
import * as i4 from '@angular/common';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import * as i3 from 'ngx-extended-pdf-viewer';
|
|
6
|
+
import { NgxExtendedPdfViewerModule, NgxExtendedPdfViewerService } from 'ngx-extended-pdf-viewer';
|
|
7
|
+
import * as i1$1 from '@angular/router';
|
|
8
|
+
import * as i1 from '@angular/common/http';
|
|
9
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
10
|
+
import { throwError } from 'rxjs';
|
|
11
|
+
import { catchError } from 'rxjs/operators';
|
|
12
|
+
|
|
13
|
+
class UiComponentsService {
|
|
14
|
+
constructor() { }
|
|
15
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: UiComponentsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
16
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: UiComponentsService, providedIn: 'root' });
|
|
17
|
+
}
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: UiComponentsService, decorators: [{
|
|
19
|
+
type: Injectable,
|
|
20
|
+
args: [{
|
|
21
|
+
providedIn: 'root'
|
|
22
|
+
}]
|
|
23
|
+
}], ctorParameters: () => [] });
|
|
24
|
+
|
|
25
|
+
class UiComponentsComponent {
|
|
26
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: UiComponentsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
27
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: UiComponentsComponent, isStandalone: true, selector: "sgdea-ui-components", ngImport: i0, template: `
|
|
28
|
+
<p>
|
|
29
|
+
ui-components works!
|
|
30
|
+
</p>
|
|
31
|
+
`, isInline: true, styles: [""] });
|
|
32
|
+
}
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: UiComponentsComponent, decorators: [{
|
|
34
|
+
type: Component,
|
|
35
|
+
args: [{ selector: 'sgdea-ui-components', imports: [], template: `
|
|
36
|
+
<p>
|
|
37
|
+
ui-components works!
|
|
38
|
+
</p>
|
|
39
|
+
` }]
|
|
40
|
+
}] });
|
|
41
|
+
|
|
42
|
+
class ButtonComponent {
|
|
43
|
+
label = 'Click me';
|
|
44
|
+
type = 'primary';
|
|
45
|
+
disabled = false;
|
|
46
|
+
size = 'medium';
|
|
47
|
+
clicked = new EventEmitter();
|
|
48
|
+
onClick() {
|
|
49
|
+
if (!this.disabled) {
|
|
50
|
+
this.clicked.emit();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
54
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: ButtonComponent, isStandalone: true, selector: "sgdea-button", inputs: { label: "label", type: "type", disabled: "disabled", size: "size" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<button \r\n class=\"sgdea-btn sgdea-btn--{{ type }} sgdea-btn--{{ size }}\"\r\n [disabled]=\"disabled\"\r\n (click)=\"onClick()\">\r\n {{ label }}\r\n</button>\r\n", styles: [".sgdea-btn{font-family:Arial,sans-serif;font-weight:500;border:none;border-radius:4px;cursor:pointer;transition:all .3s ease;padding:.5rem 1rem}.sgdea-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 8px #0003}.sgdea-btn:disabled{opacity:.6;cursor:not-allowed}.sgdea-btn--primary{background-color:#007bff;color:#fff}.sgdea-btn--primary:hover:not(:disabled){background-color:#0056b3}.sgdea-btn--secondary{background-color:#6c757d;color:#fff}.sgdea-btn--secondary:hover:not(:disabled){background-color:#545b62}.sgdea-btn--danger{background-color:#dc3545;color:#fff}.sgdea-btn--danger:hover:not(:disabled){background-color:#c82333}.sgdea-btn--small{padding:.25rem .5rem;font-size:.875rem}.sgdea-btn--medium{padding:.5rem 1rem;font-size:1rem}.sgdea-btn--large{padding:.75rem 1.5rem;font-size:1.25rem}\n"] });
|
|
55
|
+
}
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
57
|
+
type: Component,
|
|
58
|
+
args: [{ selector: 'sgdea-button', imports: [], template: "<button \r\n class=\"sgdea-btn sgdea-btn--{{ type }} sgdea-btn--{{ size }}\"\r\n [disabled]=\"disabled\"\r\n (click)=\"onClick()\">\r\n {{ label }}\r\n</button>\r\n", styles: [".sgdea-btn{font-family:Arial,sans-serif;font-weight:500;border:none;border-radius:4px;cursor:pointer;transition:all .3s ease;padding:.5rem 1rem}.sgdea-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 8px #0003}.sgdea-btn:disabled{opacity:.6;cursor:not-allowed}.sgdea-btn--primary{background-color:#007bff;color:#fff}.sgdea-btn--primary:hover:not(:disabled){background-color:#0056b3}.sgdea-btn--secondary{background-color:#6c757d;color:#fff}.sgdea-btn--secondary:hover:not(:disabled){background-color:#545b62}.sgdea-btn--danger{background-color:#dc3545;color:#fff}.sgdea-btn--danger:hover:not(:disabled){background-color:#c82333}.sgdea-btn--small{padding:.25rem .5rem;font-size:.875rem}.sgdea-btn--medium{padding:.5rem 1rem;font-size:1rem}.sgdea-btn--large{padding:.75rem 1.5rem;font-size:1.25rem}\n"] }]
|
|
59
|
+
}], propDecorators: { label: [{
|
|
60
|
+
type: Input
|
|
61
|
+
}], type: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], disabled: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], size: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], clicked: [{
|
|
68
|
+
type: Output
|
|
69
|
+
}] } });
|
|
70
|
+
|
|
71
|
+
class DocumentViewerFileService {
|
|
72
|
+
http;
|
|
73
|
+
constructor(http) {
|
|
74
|
+
this.http = http;
|
|
75
|
+
}
|
|
76
|
+
getFileByParams(params) {
|
|
77
|
+
const endpoint = `${params.url}/api/v1/file/download?objectName=${encodeURIComponent(params.nameFile)}&bucketName=${params.nameBucket}`;
|
|
78
|
+
const headers = new HttpHeaders({
|
|
79
|
+
'Content-Type': 'application/json',
|
|
80
|
+
Authorization: `Bearer ${params.token}`
|
|
81
|
+
});
|
|
82
|
+
return this.http
|
|
83
|
+
.post(endpoint, {}, { headers, responseType: 'blob' })
|
|
84
|
+
.pipe(catchError((error) => {
|
|
85
|
+
const errorMessages = {
|
|
86
|
+
0: 'No hay conexión con el servidor',
|
|
87
|
+
400: 'Solicitud inválida',
|
|
88
|
+
401: 'No autorizado. Token inválido o expirado',
|
|
89
|
+
403: 'Acceso denegado',
|
|
90
|
+
404: 'Archivo no encontrado',
|
|
91
|
+
500: 'Error interno del servidor'
|
|
92
|
+
};
|
|
93
|
+
const message = errorMessages[error.status] ??
|
|
94
|
+
'Error inesperado al descargar el archivo';
|
|
95
|
+
return throwError(() => new Error(message));
|
|
96
|
+
}));
|
|
97
|
+
}
|
|
98
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: DocumentViewerFileService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
99
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: DocumentViewerFileService, providedIn: 'root' });
|
|
100
|
+
}
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: DocumentViewerFileService, decorators: [{
|
|
102
|
+
type: Injectable,
|
|
103
|
+
args: [{
|
|
104
|
+
providedIn: 'root'
|
|
105
|
+
}]
|
|
106
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }] });
|
|
107
|
+
|
|
108
|
+
class PdfViewerComponent {
|
|
109
|
+
route;
|
|
110
|
+
fileService;
|
|
111
|
+
pdfService;
|
|
112
|
+
nameFile;
|
|
113
|
+
nameBucket;
|
|
114
|
+
nameSpaceBucket;
|
|
115
|
+
url;
|
|
116
|
+
token = '';
|
|
117
|
+
pdfSrc;
|
|
118
|
+
loading = signal(false);
|
|
119
|
+
errorMessage = signal(null);
|
|
120
|
+
constructor(route, fileService, pdfService) {
|
|
121
|
+
this.route = route;
|
|
122
|
+
this.fileService = fileService;
|
|
123
|
+
this.pdfService = pdfService;
|
|
124
|
+
}
|
|
125
|
+
ngOnInit() {
|
|
126
|
+
// 1) Si el host ya pasó valores por @Input, usarlos directamente
|
|
127
|
+
if (this.url ||
|
|
128
|
+
this.nameFile ||
|
|
129
|
+
this.nameBucket ||
|
|
130
|
+
this.nameSpaceBucket ||
|
|
131
|
+
this.token) {
|
|
132
|
+
this.loadPdf();
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
// 2) Si no hay @Input, intentar leer desde query params (modo microfront original)
|
|
136
|
+
this.route.queryParams.subscribe((params) => {
|
|
137
|
+
this.nameFile = this.nameFile ?? params['nameFile'];
|
|
138
|
+
this.nameBucket = this.nameBucket ?? params['nameBucket'];
|
|
139
|
+
this.nameSpaceBucket = this.nameSpaceBucket ?? params['nameSpaceBucket'];
|
|
140
|
+
this.token = this.token || params['token'];
|
|
141
|
+
this.url = this.url ?? params['url'];
|
|
142
|
+
if (this.url ||
|
|
143
|
+
this.nameFile ||
|
|
144
|
+
this.nameBucket ||
|
|
145
|
+
this.nameSpaceBucket ||
|
|
146
|
+
this.token) {
|
|
147
|
+
this.loadPdf();
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
this.errorMessage.set(`No se han proporcionado los parámetros necesarios {url: ${this.url} nameFile: ${this.nameFile} nameBucket: ${this.nameBucket} nameSpaceBucket: ${this.nameSpaceBucket} token: ${this.token}}`);
|
|
151
|
+
this.loading.set(false);
|
|
152
|
+
this.errorMessage.set(null);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
loadPdf() {
|
|
157
|
+
this.loading.set(true);
|
|
158
|
+
this.errorMessage.set(null);
|
|
159
|
+
this.fileService
|
|
160
|
+
.getFileByParams({
|
|
161
|
+
nameFile: this.nameFile,
|
|
162
|
+
nameBucket: this.nameBucket,
|
|
163
|
+
nameSpaceBucket: this.nameSpaceBucket,
|
|
164
|
+
url: this.url,
|
|
165
|
+
token: this.token,
|
|
166
|
+
})
|
|
167
|
+
.subscribe({
|
|
168
|
+
next: (blob) => {
|
|
169
|
+
this.pdfSrc = URL.createObjectURL(blob);
|
|
170
|
+
this.loading.set(false);
|
|
171
|
+
this.errorMessage.set(null);
|
|
172
|
+
},
|
|
173
|
+
error: (err) => {
|
|
174
|
+
this.loading.set(false);
|
|
175
|
+
this.errorMessage.set(err.message || 'Error al cargar el documento');
|
|
176
|
+
},
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: PdfViewerComponent, deps: [{ token: i1$1.ActivatedRoute }, { token: DocumentViewerFileService }, { token: i3.NgxExtendedPdfViewerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
180
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: PdfViewerComponent, isStandalone: true, selector: "sgdea-document-viewer", inputs: { nameFile: "nameFile", nameBucket: "nameBucket", nameSpaceBucket: "nameSpaceBucket", url: "url", token: "token" }, providers: [NgxExtendedPdfViewerService], ngImport: i0, template: "<div *ngIf=\"loading()\" class=\"loader\">\r\n Cargando documento...\r\n</div>\r\n\r\n<div *ngIf=\"errorMessage() && !loading()\" class=\"error-message\">\r\n {{ errorMessage() }}\r\n</div>\r\n\r\n<div class=\"pdf-viewer-container\">\r\n <ngx-extended-pdf-viewer\r\n *ngIf=\"pdfSrc && !loading()\"\r\n [src]=\"pdfSrc\"\r\n height=\"auto\"\r\n useBrowserLocale=\"false\"\r\n [showDownloadButton]=\"false\"\r\n [showPrintButton]=\"false\"\r\n [showOpenFileButton]=\"false\"\r\n [showSecondaryToolbarButton]=\"false\"\r\n [showFirstAndLastPageButtons]=\"false\"\r\n [showPagingButtons]=\"false\"\r\n [showZoomButtons]=\"false\"\r\n [showDrawEditor]=\"false\"\r\n [showTextEditor]=\"false\"\r\n [showStampEditor]=\"false\"\r\n [showHighlightEditor]=\"false\"\r\n >\r\n </ngx-extended-pdf-viewer>\r\n</div>\r\n\r\n", styles: [".loader,.error-message{padding:1rem;text-align:center}.error-message{color:#b71c1c;background-color:#ffebee;border:1px solid #ef5350;border-radius:4px;margin:1rem 0}.pdf-viewer-container{flex:1;min-height:0;width:100%;display:flex;flex-direction:column}.pdf-viewer-container ngx-extended-pdf-viewer{flex:1;min-height:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: NgxExtendedPdfViewerModule }, { kind: "component", type: i3.NgxExtendedPdfViewerComponent, selector: "ngx-extended-pdf-viewer", inputs: ["customFindbarInputArea", "customToolbar", "customFindbar", "customFindbarButtons", "customPdfViewer", "customSecondaryToolbar", "customSidebar", "customThumbnail", "customFreeFloatingBar", "showFreeFloatingBar", "enableDragAndDrop", "forceUsingLegacyES5", "formData", "disableForms", "pageViewMode", "scrollMode", "authorization", "httpHeaders", "contextMenuAllowed", "enablePrint", "enablePrintAutoRotate", "forceFullReloadOfJavaScriptCode", "showTextEditor", "showStampEditor", "showCommentEditor", "showDrawEditor", "showHighlightEditor", "showSignatureEditor", "logLevel", "minifiedJSLibraries", "printResolution", "rotation", "src", "base64Src", "minHeight", "height", "backgroundColor", "pdfBackgroundColor", "filenameForDownload", "ignoreKeyboard", "ignoreKeys", "acceptKeys", "imageResourcesPath", "localeFolderPath", "language", "listenToURL", "nameddest", "password", "replaceBrowserPrint", "useInlineScripts", "showUnverifiedSignatures", "startTabindex", "showSidebarButton", "sidebarVisible", "activeSidebarView", "findbarVisible", "propertiesDialogVisible", "showFindButton", "showFindHighlightAll", "showFindMatchCase", "showFindMultiple", "showFindRegexp", "showFindEntireWord", "showFindMatchDiacritics", "showFindResultsCount", "showFindMessages", "showMovePageButton", "showPagingButtons", "showFirstAndLastPageButtons", "showPreviousAndNextPageButtons", "showPageNumber", "showPageLabel", "showZoomButtons", "showZoomDropdown", "showPresentationModeButton", "showOpenFileButton", "showPrintButton", "showDownloadButton", "theme", "showToolbar", "showSecondaryToolbarButton", "showSinglePageModeButton", "showVerticalScrollButton", "showHorizontalScrollButton", "showWrappedScrollButton", "showInfiniteScrollButton", "showBookModeButton", "showRotateButton", "showRotateCwButton", "showRotateCcwButton", "handTool", "showHandToolButton", "showSpreadButton", "showPropertiesButton", "showBorders", "spread", "showScrollingButtons", "page", "pageLabel", "textLayer", "zoom", "zoomLevels", "maxZoom", "minZoom", "mobileFriendlyZoom"], outputs: ["annotationEditorEvent", "formDataChange", "pageViewModeChange", "progress", "srcChange", "scrollModeChange", "afterPrint", "beforePrint", "currentZoomFactor", "rotationChange", "annotationLayerRendered", "annotationEditorLayerRendered", "xfaLayerRendered", "outlineLoaded", "attachmentsloaded", "layersloaded", "sidebarVisibleChange", "activeSidebarViewChange", "findbarVisibleChange", "propertiesDialogVisibleChange", "handToolChange", "spreadChange", "thumbnailDrawn", "pageChange", "pageLabelChange", "pagesLoaded", "pageRender", "pageRendered", "pdfDownloaded", "pdfLoaded", "pdfLoadingStarts", "pdfLoadingFailed", "textLayerRendered", "annotationEditorModeChanged", "updateFindMatchesCount", "updateFindState", "zoomChange"] }] });
|
|
181
|
+
}
|
|
182
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: PdfViewerComponent, decorators: [{
|
|
183
|
+
type: Component,
|
|
184
|
+
args: [{ selector: 'sgdea-document-viewer', standalone: true, imports: [CommonModule, NgxExtendedPdfViewerModule], providers: [NgxExtendedPdfViewerService], template: "<div *ngIf=\"loading()\" class=\"loader\">\r\n Cargando documento...\r\n</div>\r\n\r\n<div *ngIf=\"errorMessage() && !loading()\" class=\"error-message\">\r\n {{ errorMessage() }}\r\n</div>\r\n\r\n<div class=\"pdf-viewer-container\">\r\n <ngx-extended-pdf-viewer\r\n *ngIf=\"pdfSrc && !loading()\"\r\n [src]=\"pdfSrc\"\r\n height=\"auto\"\r\n useBrowserLocale=\"false\"\r\n [showDownloadButton]=\"false\"\r\n [showPrintButton]=\"false\"\r\n [showOpenFileButton]=\"false\"\r\n [showSecondaryToolbarButton]=\"false\"\r\n [showFirstAndLastPageButtons]=\"false\"\r\n [showPagingButtons]=\"false\"\r\n [showZoomButtons]=\"false\"\r\n [showDrawEditor]=\"false\"\r\n [showTextEditor]=\"false\"\r\n [showStampEditor]=\"false\"\r\n [showHighlightEditor]=\"false\"\r\n >\r\n </ngx-extended-pdf-viewer>\r\n</div>\r\n\r\n", styles: [".loader,.error-message{padding:1rem;text-align:center}.error-message{color:#b71c1c;background-color:#ffebee;border:1px solid #ef5350;border-radius:4px;margin:1rem 0}.pdf-viewer-container{flex:1;min-height:0;width:100%;display:flex;flex-direction:column}.pdf-viewer-container ngx-extended-pdf-viewer{flex:1;min-height:0}\n"] }]
|
|
185
|
+
}], ctorParameters: () => [{ type: i1$1.ActivatedRoute }, { type: DocumentViewerFileService }, { type: i3.NgxExtendedPdfViewerService }], propDecorators: { nameFile: [{
|
|
186
|
+
type: Input
|
|
187
|
+
}], nameBucket: [{
|
|
188
|
+
type: Input
|
|
189
|
+
}], nameSpaceBucket: [{
|
|
190
|
+
type: Input
|
|
191
|
+
}], url: [{
|
|
192
|
+
type: Input
|
|
193
|
+
}], token: [{
|
|
194
|
+
type: Input
|
|
195
|
+
}] } });
|
|
196
|
+
|
|
197
|
+
/*
|
|
198
|
+
* Public API Surface of ui-components
|
|
199
|
+
*/
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Generated bundle index. Do not edit.
|
|
203
|
+
*/
|
|
204
|
+
|
|
205
|
+
export { ButtonComponent, PdfViewerComponent, UiComponentsComponent, UiComponentsService };
|
|
206
|
+
//# sourceMappingURL=infodocviewdoc.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infodocviewdoc.mjs","sources":["../../../projects/ui-components/src/lib/ui-components.service.ts","../../../projects/ui-components/src/lib/ui-components.component.ts","../../../projects/ui-components/src/lib/button/button.component.ts","../../../projects/ui-components/src/lib/button/button.component.html","../../../projects/ui-components/src/lib/document-viewer/services/file.service.ts","../../../projects/ui-components/src/lib/document-viewer/pages/pdf-viewer-page/pdf-viewer.component.ts","../../../projects/ui-components/src/lib/document-viewer/pages/pdf-viewer-page/pdf-viewer.component.html","../../../projects/ui-components/src/public-api.ts","../../../projects/ui-components/src/infodocviewdoc.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UiComponentsService {\r\n\r\n constructor() { }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sgdea-ui-components',\r\n imports: [],\r\n template: `\r\n <p>\r\n ui-components works!\r\n </p>\r\n `,\r\n styles: ``\r\n})\r\nexport class UiComponentsComponent {\r\n\r\n}\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'sgdea-button',\r\n imports: [],\r\n templateUrl: './button.component.html',\r\n styleUrl: './button.component.css'\r\n})\r\nexport class ButtonComponent {\r\n @Input() label: string = 'Click me';\r\n @Input() type: 'primary' | 'secondary' | 'danger' = 'primary';\r\n @Input() disabled: boolean = false;\r\n @Input() size: 'small' | 'medium' | 'large' = 'medium';\r\n @Output() clicked = new EventEmitter<void>();\r\n\r\n onClick() {\r\n if (!this.disabled) {\r\n this.clicked.emit();\r\n }\r\n }\r\n}\r\n","<button \r\n class=\"sgdea-btn sgdea-btn--{{ type }} sgdea-btn--{{ size }}\"\r\n [disabled]=\"disabled\"\r\n (click)=\"onClick()\">\r\n {{ label }}\r\n</button>\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpClient,\r\n HttpErrorResponse,\r\n HttpHeaders\r\n} from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DocumentViewerFileService {\r\n constructor(private http: HttpClient) {}\r\n\r\n getFileByParams(params: {\r\n nameFile: string;\r\n nameBucket: string;\r\n nameSpaceBucket: string;\r\n url: string;\r\n token: string;\r\n }): Observable<Blob> {\r\n const endpoint = `${params.url}/api/v1/file/download?objectName=${encodeURIComponent(\r\n params.nameFile\r\n )}&bucketName=${params.nameBucket}`;\r\n\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${params.token}`\r\n });\r\n\r\n return this.http\r\n .post(endpoint, {}, { headers, responseType: 'blob' })\r\n .pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n const errorMessages: Record<number, string> = {\r\n 0: 'No hay conexión con el servidor',\r\n 400: 'Solicitud inválida',\r\n 401: 'No autorizado. Token inválido o expirado',\r\n 403: 'Acceso denegado',\r\n 404: 'Archivo no encontrado',\r\n 500: 'Error interno del servidor'\r\n };\r\n\r\n const message =\r\n errorMessages[error.status] ??\r\n 'Error inesperado al descargar el archivo';\r\n\r\n return throwError(() => new Error(message));\r\n })\r\n );\r\n }\r\n}\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit, signal } from '@angular/core';\r\nimport { ActivatedRoute, Params } from '@angular/router';\r\nimport { NgxExtendedPdfViewerModule, NgxExtendedPdfViewerService } from 'ngx-extended-pdf-viewer';\r\nimport { DocumentViewerFileService } from '../../services/file.service';\r\n\r\n@Component({\r\n selector: 'sgdea-document-viewer',\r\n standalone: true,\r\n imports: [CommonModule, NgxExtendedPdfViewerModule],\r\n templateUrl: './pdf-viewer.component.html',\r\n styleUrls: ['./pdf-viewer.component.css'],\r\n providers: [NgxExtendedPdfViewerService]\r\n})\r\nexport class PdfViewerComponent implements OnInit {\r\n @Input() nameFile?: string;\r\n @Input() nameBucket?: string;\r\n @Input() nameSpaceBucket?: string;\r\n @Input() url?: string;\r\n @Input() token: string = '';\r\n\r\n pdfSrc?: string;\r\n loading = signal<boolean>(false);\r\n errorMessage = signal<string | null>(null);\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private fileService: DocumentViewerFileService,\r\n private pdfService: NgxExtendedPdfViewerService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n // 1) Si el host ya pasó valores por @Input, usarlos directamente\r\n if (\r\n this.url ||\r\n this.nameFile ||\r\n this.nameBucket ||\r\n this.nameSpaceBucket ||\r\n this.token\r\n ) {\r\n this.loadPdf();\r\n return;\r\n }\r\n\r\n // 2) Si no hay @Input, intentar leer desde query params (modo microfront original)\r\n this.route.queryParams.subscribe((params: Params) => {\r\n this.nameFile = this.nameFile ?? params['nameFile'];\r\n this.nameBucket = this.nameBucket ?? params['nameBucket'];\r\n this.nameSpaceBucket = this.nameSpaceBucket ?? params['nameSpaceBucket'];\r\n this.token = this.token || params['token'];\r\n this.url = this.url ?? params['url'];\r\n\r\n if (\r\n this.url ||\r\n this.nameFile ||\r\n this.nameBucket ||\r\n this.nameSpaceBucket ||\r\n this.token\r\n ) {\r\n this.loadPdf();\r\n } else {\r\n this.errorMessage.set(\r\n `No se han proporcionado los parámetros necesarios {url: ${this.url} nameFile: ${this.nameFile} nameBucket: ${this.nameBucket} nameSpaceBucket: ${this.nameSpaceBucket} token: ${this.token}}`\r\n );\r\n this.loading.set(false);\r\n this.errorMessage.set(null);\r\n }\r\n });\r\n }\r\n\r\n private loadPdf() {\r\n this.loading.set(true);\r\n this.errorMessage.set(null);\r\n\r\n this.fileService\r\n .getFileByParams({\r\n nameFile: this.nameFile!,\r\n nameBucket: this.nameBucket!,\r\n nameSpaceBucket: this.nameSpaceBucket!,\r\n url: this.url!,\r\n token: this.token!,\r\n })\r\n .subscribe({\r\n next: (blob) => {\r\n this.pdfSrc = URL.createObjectURL(blob);\r\n this.loading.set(false);\r\n this.errorMessage.set(null);\r\n },\r\n error: (err: Error) => {\r\n this.loading.set(false);\r\n this.errorMessage.set(err.message || 'Error al cargar el documento');\r\n },\r\n });\r\n }\r\n}\r\n\r\n","<div *ngIf=\"loading()\" class=\"loader\">\r\n Cargando documento...\r\n</div>\r\n\r\n<div *ngIf=\"errorMessage() && !loading()\" class=\"error-message\">\r\n {{ errorMessage() }}\r\n</div>\r\n\r\n<div class=\"pdf-viewer-container\">\r\n <ngx-extended-pdf-viewer\r\n *ngIf=\"pdfSrc && !loading()\"\r\n [src]=\"pdfSrc\"\r\n height=\"auto\"\r\n useBrowserLocale=\"false\"\r\n [showDownloadButton]=\"false\"\r\n [showPrintButton]=\"false\"\r\n [showOpenFileButton]=\"false\"\r\n [showSecondaryToolbarButton]=\"false\"\r\n [showFirstAndLastPageButtons]=\"false\"\r\n [showPagingButtons]=\"false\"\r\n [showZoomButtons]=\"false\"\r\n [showDrawEditor]=\"false\"\r\n [showTextEditor]=\"false\"\r\n [showStampEditor]=\"false\"\r\n [showHighlightEditor]=\"false\"\r\n >\r\n </ngx-extended-pdf-viewer>\r\n</div>\r\n\r\n","/*\r\n * Public API Surface of ui-components\r\n */\r\n\r\nexport * from './lib/ui-components.service';\r\nexport * from './lib/ui-components.component';\r\nexport * from './lib/button/button.component';\r\nexport * from './lib/document-viewer/pages/pdf-viewer-page/pdf-viewer.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.DocumentViewerFileService"],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class ButtonComponent {
|
|
4
|
+
label: string;
|
|
5
|
+
type: 'primary' | 'secondary' | 'danger';
|
|
6
|
+
disabled: boolean;
|
|
7
|
+
size: 'small' | 'medium' | 'large';
|
|
8
|
+
clicked: EventEmitter<void>;
|
|
9
|
+
onClick(): void;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ButtonComponent, never>;
|
|
11
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ButtonComponent, "sgdea-button", never, { "label": { "alias": "label"; "required": false; }; "type": { "alias": "type"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "clicked": "clicked"; }, never, never, true, never>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { ActivatedRoute } from '@angular/router';
|
|
3
|
+
import { NgxExtendedPdfViewerService } from 'ngx-extended-pdf-viewer';
|
|
4
|
+
import { DocumentViewerFileService } from '../../services/file.service';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class PdfViewerComponent implements OnInit {
|
|
7
|
+
private route;
|
|
8
|
+
private fileService;
|
|
9
|
+
private pdfService;
|
|
10
|
+
nameFile?: string;
|
|
11
|
+
nameBucket?: string;
|
|
12
|
+
nameSpaceBucket?: string;
|
|
13
|
+
url?: string;
|
|
14
|
+
token: string;
|
|
15
|
+
pdfSrc?: string;
|
|
16
|
+
loading: import("@angular/core").WritableSignal<boolean>;
|
|
17
|
+
errorMessage: import("@angular/core").WritableSignal<string | null>;
|
|
18
|
+
constructor(route: ActivatedRoute, fileService: DocumentViewerFileService, pdfService: NgxExtendedPdfViewerService);
|
|
19
|
+
ngOnInit(): void;
|
|
20
|
+
private loadPdf;
|
|
21
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PdfViewerComponent, never>;
|
|
22
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PdfViewerComponent, "sgdea-document-viewer", never, { "nameFile": { "alias": "nameFile"; "required": false; }; "nameBucket": { "alias": "nameBucket"; "required": false; }; "nameSpaceBucket": { "alias": "nameSpaceBucket"; "required": false; }; "url": { "alias": "url"; "required": false; }; "token": { "alias": "token"; "required": false; }; }, {}, never, never, true, never>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class DocumentViewerFileService {
|
|
5
|
+
private http;
|
|
6
|
+
constructor(http: HttpClient);
|
|
7
|
+
getFileByParams(params: {
|
|
8
|
+
nameFile: string;
|
|
9
|
+
nameBucket: string;
|
|
10
|
+
nameSpaceBucket: string;
|
|
11
|
+
url: string;
|
|
12
|
+
token: string;
|
|
13
|
+
}): Observable<Blob>;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DocumentViewerFileService, never>;
|
|
15
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<DocumentViewerFileService>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class UiComponentsComponent {
|
|
3
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiComponentsComponent, never>;
|
|
4
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UiComponentsComponent, "sgdea-ui-components", never, {}, {}, never, never, true, never>;
|
|
5
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "infodocviewdoc",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/animations": "19.2.4",
|
|
6
|
+
"@angular/cdk": "^19.2.9",
|
|
7
|
+
"@angular/common": "19.2.4",
|
|
8
|
+
"@angular/compiler": "19.2.4",
|
|
9
|
+
"@angular/core": "19.2.4",
|
|
10
|
+
"@angular/forms": "19.2.4",
|
|
11
|
+
"@angular/material": "^19.2.9",
|
|
12
|
+
"@angular/platform-browser": "19.2.4",
|
|
13
|
+
"@angular/platform-browser-dynamic": "19.2.4",
|
|
14
|
+
"@angular/router": "19.2.4",
|
|
15
|
+
"@ngxs/devtools-plugin": "^19.0.0",
|
|
16
|
+
"@ngxs/storage-plugin": "^19.0.0",
|
|
17
|
+
"@ngxs/store": "^19.0.0",
|
|
18
|
+
"@softarc/native-federation-node": "^2.0.10",
|
|
19
|
+
"@swimlane/ngx-datatable": "^21.0.0-alpha.1",
|
|
20
|
+
"es-module-shims": "1.5.12",
|
|
21
|
+
"ngx-extended-pdf-viewer": "^25.6.4",
|
|
22
|
+
"ngx-skeleton-loader": "^11.0.0",
|
|
23
|
+
"permission-info-lib": "^0.0.2",
|
|
24
|
+
"rxjs": "~7.8.0",
|
|
25
|
+
"sweetalert2": "^11.19.1",
|
|
26
|
+
"zone.js": "~0.15.0"
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"tslib": "2.3.0"
|
|
30
|
+
},
|
|
31
|
+
"sideEffects": false,
|
|
32
|
+
"module": "fesm2022/infodocviewdoc.mjs",
|
|
33
|
+
"typings": "index.d.ts",
|
|
34
|
+
"exports": {
|
|
35
|
+
"./package.json": {
|
|
36
|
+
"default": "./package.json"
|
|
37
|
+
},
|
|
38
|
+
".": {
|
|
39
|
+
"types": "./index.d.ts",
|
|
40
|
+
"default": "./fesm2022/infodocviewdoc.mjs"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
package/public-api.d.ts
ADDED