ngx-dsxlibrary 2.21.5 → 2.21.7

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 CHANGED
@@ -20,6 +20,31 @@ Si estas versiones no coinciden (o no son compatibles), pueden aparecer errores
20
20
 
21
21
  ## Guía para consumidores
22
22
 
23
+ ### Envío de archivos al backend (POST)
24
+
25
+ Si tu endpoint del backend recibe datos por formulario multipart (por ejemplo `[FromForm]` en ASP.NET Core), puedes usar `HttpHelpersService`.
26
+
27
+ Este servicio convierte automáticamente el objeto a `FormData`, así que permite enviar campos normales y archivos en una sola petición.
28
+
29
+ ```ts
30
+ import { HttpHelpersService } from 'ngx-dsxlibrary';
31
+
32
+ constructor(private httpHelpers: HttpHelpersService) {}
33
+
34
+ subirArchivo(file: File | null) {
35
+ return this.httpHelpers.post<{ ok: boolean; mensaje: string }>('documentos/subir', {
36
+ documentoId: 10,
37
+ nombre: 'Contrato',
38
+ archivo: file,
39
+ });
40
+ }
41
+ ```
42
+
43
+ Notas:
44
+
45
+ - Si el archivo viene en `null` o `undefined`, ese campo se omite del `FormData`.
46
+ - Es ideal para simplificar flujos de carga de archivos con metadata.
47
+
23
48
  ### Fuentes compartidas (@font-face)
24
49
 
25
50
  La librería expone un archivo CSS con `@font-face` para que cualquier proyecto consumidor lo importe una sola vez.
@@ -3650,9 +3650,52 @@ function toFormData(data, formData = new FormData(), parentKey) {
3650
3650
  */
3651
3651
  class HttpHelpersService {
3652
3652
  http = inject(HttpClient);
3653
- post(url, data) {
3653
+ /**
3654
+ * POST orientado a endpoints `[FromForm]` en backend (ASP.NET Core u otros).
3655
+ *
3656
+ * Convierte automáticamente `data` a `FormData`, por lo que permite enviar
3657
+ * campos simples y archivos (`File`, `Blob`, `FileList`) en una sola llamada.
3658
+ *
3659
+ * Casos de uso comunes:
3660
+ * - Crear/actualizar recursos con adjuntos.
3661
+ * - Subir archivos junto con metadata (id, nombre, observaciones, etc.).
3662
+ * - Mantener un único método de POST para formularios multipart.
3663
+ *
3664
+ * @typeParam T Tipo de respuesta esperada del backend.
3665
+ * @param url Endpoint relativo o absoluto.
3666
+ * @param data Objeto plano que se transformará a `FormData`.
3667
+ * @returns `Observable<T>` con la respuesta del backend.
3668
+ *
3669
+ * @example
3670
+ * this.httpHelpers.postForm<{ ok: boolean }>('documentos/subir', {
3671
+ * documentoId: 15,
3672
+ * descripcion: 'Contrato firmado',
3673
+ * archivo: this.archivoSeleccionado // File | null
3674
+ * });
3675
+ */
3676
+ postForm(url, data) {
3654
3677
  return this.http.post(url, toFormData(data));
3655
3678
  }
3679
+ /**
3680
+ * PUT orientado a endpoints `[FromForm]` en backend (ASP.NET Core u otros).
3681
+ *
3682
+ * Equivalente a `postForm`, pero usando el verbo HTTP PUT para actualizar recursos existentes.
3683
+ *
3684
+ * @typeParam T Tipo de respuesta esperada del backend.
3685
+ * @param url Endpoint relativo o absoluto.
3686
+ * @param data Objeto plano que se transformará a `FormData`.
3687
+ * @returns `Observable<T>` con la respuesta del backend.
3688
+ *
3689
+ * @example
3690
+ * this.httpHelpers.putForm<{ ok: boolean }>('documentos/actualizar/15', {
3691
+ * documentoId: 15,
3692
+ * descripcion: 'Contrato actualizado',
3693
+ * archivo: this.archivoSeleccionado // File | null
3694
+ * });
3695
+ */
3696
+ putForm(url, data) {
3697
+ return this.http.put(url, toFormData(data));
3698
+ }
3656
3699
  /**
3657
3700
  * GET para descarga de archivos en formato Blob.
3658
3701
  * Útil cuando solo se necesita el contenido del archivo.