@acvl/mobile-components 0.0.0-stage → 0.0.2
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 +147 -2
- package/assets/fonts/Inter_400Regular.ttf +0 -0
- package/assets/fonts/Inter_500Medium.ttf +0 -0
- package/assets/fonts/Inter_600SemiBold.ttf +0 -0
- package/assets/fonts/Inter_700Bold.ttf +0 -0
- package/assets/fonts/Inter_800ExtraBold.ttf +0 -0
- package/assets/fonts/Inter_900Black.ttf +0 -0
- package/assets/fonts/OFL.txt +93 -0
- package/lib/module/camara/CampoDeFotos.js +124 -0
- package/lib/module/camara/CampoDeFotos.js.map +1 -0
- package/lib/module/camara/elegir.js +104 -0
- package/lib/module/camara/elegir.js.map +1 -0
- package/lib/module/camara/index.js +10 -0
- package/lib/module/camara/index.js.map +1 -0
- package/lib/module/camara/reducir.js +93 -0
- package/lib/module/camara/reducir.js.map +1 -0
- package/lib/module/componentes/AccionesDelEncabezado.js +212 -0
- package/lib/module/componentes/AccionesDelEncabezado.js.map +1 -0
- package/lib/module/componentes/BotonDeAvatar.js +55 -0
- package/lib/module/componentes/BotonDeAvatar.js.map +1 -0
- package/lib/module/componentes/BotonGrande.js +105 -0
- package/lib/module/componentes/BotonGrande.js.map +1 -0
- package/lib/module/componentes/CabeceraEmpujada.js +101 -0
- package/lib/module/componentes/CabeceraEmpujada.js.map +1 -0
- package/lib/module/componentes/Chip.js +77 -0
- package/lib/module/componentes/Chip.js.map +1 -0
- package/lib/module/componentes/ContenidoDePantalla.js +56 -0
- package/lib/module/componentes/ContenidoDePantalla.js.map +1 -0
- package/lib/module/componentes/EstadoVacio.js +65 -0
- package/lib/module/componentes/EstadoVacio.js.map +1 -0
- package/lib/module/componentes/Foto.js +106 -0
- package/lib/module/componentes/Foto.js.map +1 -0
- package/lib/module/componentes/IconoDeRenglon.js +44 -0
- package/lib/module/componentes/IconoDeRenglon.js.map +1 -0
- package/lib/module/componentes/Logo.js +44 -0
- package/lib/module/componentes/Logo.js.map +1 -0
- package/lib/module/componentes/Nota.js +51 -0
- package/lib/module/componentes/Nota.js.map +1 -0
- package/lib/module/componentes/OpcionesExcluyentes.js +69 -0
- package/lib/module/componentes/OpcionesExcluyentes.js.map +1 -0
- package/lib/module/componentes/PantallaDeError.js +84 -0
- package/lib/module/componentes/PantallaDeError.js.map +1 -0
- package/lib/module/componentes/Pestanas.js +87 -0
- package/lib/module/componentes/Pestanas.js.map +1 -0
- package/lib/module/componentes/Rotulo.js +28 -0
- package/lib/module/componentes/Rotulo.js.map +1 -0
- package/lib/module/componentes/RotuloDeSeccion.js +87 -0
- package/lib/module/componentes/RotuloDeSeccion.js.map +1 -0
- package/lib/module/componentes/Tarjeta.js +63 -0
- package/lib/module/componentes/Tarjeta.js.map +1 -0
- package/lib/module/componentes/TarjetaDeDatos.js +79 -0
- package/lib/module/componentes/TarjetaDeDatos.js.map +1 -0
- package/lib/module/componentes/TiraDeFotos.js +184 -0
- package/lib/module/componentes/TiraDeFotos.js.map +1 -0
- package/lib/module/componentes/VisorDeFoto.js +171 -0
- package/lib/module/componentes/VisorDeFoto.js.map +1 -0
- package/lib/module/componentes/logos/bola-blanca.png +0 -0
- package/lib/module/componentes/logos/bola.png +0 -0
- package/lib/module/componentes/logos/logo-blanco.png +0 -0
- package/lib/module/componentes/logos/logo.png +0 -0
- package/lib/module/dialogos/HostDeDialogos.js +170 -0
- package/lib/module/dialogos/HostDeDialogos.js.map +1 -0
- package/lib/module/dialogos/dialogos.js +112 -0
- package/lib/module/dialogos/dialogos.js.map +1 -0
- package/lib/module/formularios/CampoDeSeleccion.js +72 -0
- package/lib/module/formularios/CampoDeSeleccion.js.map +1 -0
- package/lib/module/formularios/SelectorDeOpcion.js +406 -0
- package/lib/module/formularios/SelectorDeOpcion.js.map +1 -0
- package/lib/module/formularios/TextoDeAccesoControlado.js +73 -0
- package/lib/module/formularios/TextoDeAccesoControlado.js.map +1 -0
- package/lib/module/formularios/campos.js +501 -0
- package/lib/module/formularios/campos.js.map +1 -0
- package/lib/module/formularios/controlados.js +199 -0
- package/lib/module/formularios/controlados.js.map +1 -0
- package/lib/module/formularios/errores.js +91 -0
- package/lib/module/formularios/errores.js.map +1 -0
- package/lib/module/formularios/guardado.js +78 -0
- package/lib/module/formularios/guardado.js.map +1 -0
- package/lib/module/formularios/useBusqueda.js +22 -0
- package/lib/module/formularios/useBusqueda.js.map +1 -0
- package/lib/module/fotos/elegir.js +105 -0
- package/lib/module/fotos/elegir.js.map +1 -0
- package/lib/module/fotos/index.js +9 -0
- package/lib/module/fotos/index.js.map +1 -0
- package/lib/module/hoja/HojaDeLista.js +211 -0
- package/lib/module/hoja/HojaDeLista.js.map +1 -0
- package/lib/module/hoja/HojaInferior.js +112 -0
- package/lib/module/hoja/HojaInferior.js.map +1 -0
- package/lib/module/hoja/index.js +8 -0
- package/lib/module/hoja/index.js.map +1 -0
- package/lib/module/hoja/useMasDeLaFicha.js +48 -0
- package/lib/module/hoja/useMasDeLaFicha.js.map +1 -0
- package/lib/module/index.js +67 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/listas/HojaDeFiltros.js +270 -0
- package/lib/module/listas/HojaDeFiltros.js.map +1 -0
- package/lib/module/listas/ListaPaginada.js +103 -0
- package/lib/module/listas/ListaPaginada.js.map +1 -0
- package/lib/module/listas/TarjetaDeslizable.js +118 -0
- package/lib/module/listas/TarjetaDeslizable.js.map +1 -0
- package/lib/module/listas/paginado.js +11 -0
- package/lib/module/listas/paginado.js.map +1 -0
- package/lib/module/listas/piezas.js +666 -0
- package/lib/module/listas/piezas.js.map +1 -0
- package/lib/module/navegacion/BarraDePestanas.js +162 -0
- package/lib/module/navegacion/BarraDePestanas.js.map +1 -0
- package/lib/module/navegacion/BotonDeBarra.js +58 -0
- package/lib/module/navegacion/BotonDeBarra.js.map +1 -0
- package/lib/module/navegacion/encabezado.js +103 -0
- package/lib/module/navegacion/encabezado.js.map +1 -0
- package/lib/module/pantallas/PantallaDeAcceso.js +195 -0
- package/lib/module/pantallas/PantallaDeAcceso.js.map +1 -0
- package/lib/module/pantallas/PantallaDeEdicion.js +121 -0
- package/lib/module/pantallas/PantallaDeEdicion.js.map +1 -0
- package/lib/module/pantallas/PantallaDeFicha.js +94 -0
- package/lib/module/pantallas/PantallaDeFicha.js.map +1 -0
- package/lib/module/pantallas/PantallaDeHistorial.js +328 -0
- package/lib/module/pantallas/PantallaDeHistorial.js.map +1 -0
- package/lib/module/pantallas/PantallaDePerfil.js +137 -0
- package/lib/module/pantallas/PantallaDePerfil.js.map +1 -0
- package/lib/module/tema/ProveedorDeTema.js +122 -0
- package/lib/module/tema/ProveedorDeTema.js.map +1 -0
- package/lib/module/tema/estilos.js +54 -0
- package/lib/module/tema/estilos.js.map +1 -0
- package/lib/module/tema/fuentes.js +28 -0
- package/lib/module/tema/fuentes.js.map +1 -0
- package/lib/module/tema/index.js +8 -0
- package/lib/module/tema/index.js.map +1 -0
- package/lib/module/tema/paleta.js +107 -0
- package/lib/module/tema/paleta.js.map +1 -0
- package/lib/module/tema/tipografia.js +32 -0
- package/lib/module/tema/tipografia.js.map +1 -0
- package/lib/module/texto.js +48 -0
- package/lib/module/texto.js.map +1 -0
- package/lib/typescript/src/camara/CampoDeFotos.d.ts +30 -0
- package/lib/typescript/src/camara/CampoDeFotos.d.ts.map +1 -0
- package/lib/typescript/src/camara/elegir.d.ts +47 -0
- package/lib/typescript/src/camara/elegir.d.ts.map +1 -0
- package/lib/typescript/src/camara/index.d.ts +4 -0
- package/lib/typescript/src/camara/index.d.ts.map +1 -0
- package/lib/typescript/src/camara/reducir.d.ts +32 -0
- package/lib/typescript/src/camara/reducir.d.ts.map +1 -0
- package/lib/typescript/src/componentes/AccionesDelEncabezado.d.ts +34 -0
- package/lib/typescript/src/componentes/AccionesDelEncabezado.d.ts.map +1 -0
- package/lib/typescript/src/componentes/BotonDeAvatar.d.ts +17 -0
- package/lib/typescript/src/componentes/BotonDeAvatar.d.ts.map +1 -0
- package/lib/typescript/src/componentes/BotonGrande.d.ts +26 -0
- package/lib/typescript/src/componentes/BotonGrande.d.ts.map +1 -0
- package/lib/typescript/src/componentes/CabeceraEmpujada.d.ts +18 -0
- package/lib/typescript/src/componentes/CabeceraEmpujada.d.ts.map +1 -0
- package/lib/typescript/src/componentes/Chip.d.ts +14 -0
- package/lib/typescript/src/componentes/Chip.d.ts.map +1 -0
- package/lib/typescript/src/componentes/ContenidoDePantalla.d.ts +17 -0
- package/lib/typescript/src/componentes/ContenidoDePantalla.d.ts.map +1 -0
- package/lib/typescript/src/componentes/EstadoVacio.d.ts +17 -0
- package/lib/typescript/src/componentes/EstadoVacio.d.ts.map +1 -0
- package/lib/typescript/src/componentes/Foto.d.ts +41 -0
- package/lib/typescript/src/componentes/Foto.d.ts.map +1 -0
- package/lib/typescript/src/componentes/IconoDeRenglon.d.ts +25 -0
- package/lib/typescript/src/componentes/IconoDeRenglon.d.ts.map +1 -0
- package/lib/typescript/src/componentes/Logo.d.ts +13 -0
- package/lib/typescript/src/componentes/Logo.d.ts.map +1 -0
- package/lib/typescript/src/componentes/Nota.d.ts +7 -0
- package/lib/typescript/src/componentes/Nota.d.ts.map +1 -0
- package/lib/typescript/src/componentes/OpcionesExcluyentes.d.ts +14 -0
- package/lib/typescript/src/componentes/OpcionesExcluyentes.d.ts.map +1 -0
- package/lib/typescript/src/componentes/PantallaDeError.d.ts +23 -0
- package/lib/typescript/src/componentes/PantallaDeError.d.ts.map +1 -0
- package/lib/typescript/src/componentes/Pestanas.d.ts +28 -0
- package/lib/typescript/src/componentes/Pestanas.d.ts.map +1 -0
- package/lib/typescript/src/componentes/Rotulo.d.ts +6 -0
- package/lib/typescript/src/componentes/Rotulo.d.ts.map +1 -0
- package/lib/typescript/src/componentes/RotuloDeSeccion.d.ts +20 -0
- package/lib/typescript/src/componentes/RotuloDeSeccion.d.ts.map +1 -0
- package/lib/typescript/src/componentes/Tarjeta.d.ts +25 -0
- package/lib/typescript/src/componentes/Tarjeta.d.ts.map +1 -0
- package/lib/typescript/src/componentes/TarjetaDeDatos.d.ts +13 -0
- package/lib/typescript/src/componentes/TarjetaDeDatos.d.ts.map +1 -0
- package/lib/typescript/src/componentes/TiraDeFotos.d.ts +36 -0
- package/lib/typescript/src/componentes/TiraDeFotos.d.ts.map +1 -0
- package/lib/typescript/src/componentes/VisorDeFoto.d.ts +23 -0
- package/lib/typescript/src/componentes/VisorDeFoto.d.ts.map +1 -0
- package/lib/typescript/src/dialogos/HostDeDialogos.d.ts +14 -0
- package/lib/typescript/src/dialogos/HostDeDialogos.d.ts.map +1 -0
- package/lib/typescript/src/dialogos/dialogos.d.ts +65 -0
- package/lib/typescript/src/dialogos/dialogos.d.ts.map +1 -0
- package/lib/typescript/src/formularios/CampoDeSeleccion.d.ts +24 -0
- package/lib/typescript/src/formularios/CampoDeSeleccion.d.ts.map +1 -0
- package/lib/typescript/src/formularios/SelectorDeOpcion.d.ts +59 -0
- package/lib/typescript/src/formularios/SelectorDeOpcion.d.ts.map +1 -0
- package/lib/typescript/src/formularios/TextoDeAccesoControlado.d.ts +18 -0
- package/lib/typescript/src/formularios/TextoDeAccesoControlado.d.ts.map +1 -0
- package/lib/typescript/src/formularios/campos.d.ts +113 -0
- package/lib/typescript/src/formularios/campos.d.ts.map +1 -0
- package/lib/typescript/src/formularios/controlados.d.ts +29 -0
- package/lib/typescript/src/formularios/controlados.d.ts.map +1 -0
- package/lib/typescript/src/formularios/errores.d.ts +36 -0
- package/lib/typescript/src/formularios/errores.d.ts.map +1 -0
- package/lib/typescript/src/formularios/guardado.d.ts +36 -0
- package/lib/typescript/src/formularios/guardado.d.ts.map +1 -0
- package/lib/typescript/src/formularios/useBusqueda.d.ts +7 -0
- package/lib/typescript/src/formularios/useBusqueda.d.ts.map +1 -0
- package/lib/typescript/src/fotos/elegir.d.ts +28 -0
- package/lib/typescript/src/fotos/elegir.d.ts.map +1 -0
- package/lib/typescript/src/fotos/index.d.ts +3 -0
- package/lib/typescript/src/fotos/index.d.ts.map +1 -0
- package/lib/typescript/src/hoja/HojaDeLista.d.ts +50 -0
- package/lib/typescript/src/hoja/HojaDeLista.d.ts.map +1 -0
- package/lib/typescript/src/hoja/HojaInferior.d.ts +21 -0
- package/lib/typescript/src/hoja/HojaInferior.d.ts.map +1 -0
- package/lib/typescript/src/hoja/index.d.ts +4 -0
- package/lib/typescript/src/hoja/index.d.ts.map +1 -0
- package/lib/typescript/src/hoja/useMasDeLaFicha.d.ts +27 -0
- package/lib/typescript/src/hoja/useMasDeLaFicha.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +46 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/listas/HojaDeFiltros.d.ts +76 -0
- package/lib/typescript/src/listas/HojaDeFiltros.d.ts.map +1 -0
- package/lib/typescript/src/listas/ListaPaginada.d.ts +39 -0
- package/lib/typescript/src/listas/ListaPaginada.d.ts.map +1 -0
- package/lib/typescript/src/listas/TarjetaDeslizable.d.ts +33 -0
- package/lib/typescript/src/listas/TarjetaDeslizable.d.ts.map +1 -0
- package/lib/typescript/src/listas/paginado.d.ts +16 -0
- package/lib/typescript/src/listas/paginado.d.ts.map +1 -0
- package/lib/typescript/src/listas/piezas.d.ts +157 -0
- package/lib/typescript/src/listas/piezas.d.ts.map +1 -0
- package/lib/typescript/src/navegacion/BarraDePestanas.d.ts +57 -0
- package/lib/typescript/src/navegacion/BarraDePestanas.d.ts.map +1 -0
- package/lib/typescript/src/navegacion/BotonDeBarra.d.ts +15 -0
- package/lib/typescript/src/navegacion/BotonDeBarra.d.ts.map +1 -0
- package/lib/typescript/src/navegacion/encabezado.d.ts +44 -0
- package/lib/typescript/src/navegacion/encabezado.d.ts.map +1 -0
- package/lib/typescript/src/pantallas/PantallaDeAcceso.d.ts +32 -0
- package/lib/typescript/src/pantallas/PantallaDeAcceso.d.ts.map +1 -0
- package/lib/typescript/src/pantallas/PantallaDeEdicion.d.ts +38 -0
- package/lib/typescript/src/pantallas/PantallaDeEdicion.d.ts.map +1 -0
- package/lib/typescript/src/pantallas/PantallaDeFicha.d.ts +35 -0
- package/lib/typescript/src/pantallas/PantallaDeFicha.d.ts.map +1 -0
- package/lib/typescript/src/pantallas/PantallaDeHistorial.d.ts +65 -0
- package/lib/typescript/src/pantallas/PantallaDeHistorial.d.ts.map +1 -0
- package/lib/typescript/src/pantallas/PantallaDePerfil.d.ts +19 -0
- package/lib/typescript/src/pantallas/PantallaDePerfil.d.ts.map +1 -0
- package/lib/typescript/src/tema/ProveedorDeTema.d.ts +32 -0
- package/lib/typescript/src/tema/ProveedorDeTema.d.ts.map +1 -0
- package/lib/typescript/src/tema/estilos.d.ts +31 -0
- package/lib/typescript/src/tema/estilos.d.ts.map +1 -0
- package/lib/typescript/src/tema/fuentes.d.ts +20 -0
- package/lib/typescript/src/tema/fuentes.d.ts.map +1 -0
- package/lib/typescript/src/tema/index.d.ts +6 -0
- package/lib/typescript/src/tema/index.d.ts.map +1 -0
- package/lib/typescript/src/tema/paleta.d.ts +86 -0
- package/lib/typescript/src/tema/paleta.d.ts.map +1 -0
- package/lib/typescript/src/tema/tipografia.d.ts +29 -0
- package/lib/typescript/src/tema/tipografia.d.ts.map +1 -0
- package/lib/typescript/src/texto.d.ts +16 -0
- package/lib/typescript/src/texto.d.ts.map +1 -0
- package/package.json +140 -5
- package/src/camara/CampoDeFotos.tsx +132 -0
- package/src/camara/elegir.ts +113 -0
- package/src/camara/index.ts +15 -0
- package/src/camara/reducir.ts +87 -0
- package/src/componentes/AccionesDelEncabezado.tsx +247 -0
- package/src/componentes/BotonDeAvatar.tsx +59 -0
- package/src/componentes/BotonGrande.tsx +100 -0
- package/src/componentes/CabeceraEmpujada.tsx +69 -0
- package/src/componentes/Chip.tsx +60 -0
- package/src/componentes/ContenidoDePantalla.tsx +53 -0
- package/src/componentes/EstadoVacio.tsx +45 -0
- package/src/componentes/Foto.tsx +92 -0
- package/src/componentes/IconoDeRenglon.tsx +42 -0
- package/src/componentes/Logo.tsx +34 -0
- package/src/componentes/Nota.tsx +37 -0
- package/src/componentes/OpcionesExcluyentes.tsx +62 -0
- package/src/componentes/PantallaDeError.tsx +76 -0
- package/src/componentes/Pestanas.tsx +86 -0
- package/src/componentes/Rotulo.tsx +21 -0
- package/src/componentes/RotuloDeSeccion.tsx +71 -0
- package/src/componentes/Tarjeta.tsx +58 -0
- package/src/componentes/TarjetaDeDatos.tsx +62 -0
- package/src/componentes/TiraDeFotos.tsx +189 -0
- package/src/componentes/VisorDeFoto.tsx +181 -0
- package/src/componentes/logos/bola-blanca.png +0 -0
- package/src/componentes/logos/bola.png +0 -0
- package/src/componentes/logos/logo-blanco.png +0 -0
- package/src/componentes/logos/logo.png +0 -0
- package/src/dialogos/HostDeDialogos.tsx +172 -0
- package/src/dialogos/dialogos.ts +148 -0
- package/src/formularios/CampoDeSeleccion.tsx +60 -0
- package/src/formularios/SelectorDeOpcion.tsx +407 -0
- package/src/formularios/TextoDeAccesoControlado.tsx +72 -0
- package/src/formularios/campos.tsx +497 -0
- package/src/formularios/controlados.tsx +200 -0
- package/src/formularios/errores.ts +105 -0
- package/src/formularios/guardado.ts +76 -0
- package/src/formularios/useBusqueda.ts +19 -0
- package/src/fotos/elegir.ts +116 -0
- package/src/fotos/index.ts +6 -0
- package/src/hoja/HojaDeLista.tsx +214 -0
- package/src/hoja/HojaInferior.tsx +103 -0
- package/src/hoja/index.ts +5 -0
- package/src/hoja/useMasDeLaFicha.tsx +63 -0
- package/src/index.ts +151 -0
- package/src/listas/HojaDeFiltros.tsx +286 -0
- package/src/listas/ListaPaginada.tsx +117 -0
- package/src/listas/TarjetaDeslizable.tsx +126 -0
- package/src/listas/paginado.ts +15 -0
- package/src/listas/piezas.tsx +670 -0
- package/src/navegacion/BarraDePestanas.tsx +198 -0
- package/src/navegacion/BotonDeBarra.tsx +61 -0
- package/src/navegacion/encabezado.tsx +88 -0
- package/src/pantallas/PantallaDeAcceso.tsx +184 -0
- package/src/pantallas/PantallaDeEdicion.tsx +116 -0
- package/src/pantallas/PantallaDeFicha.tsx +115 -0
- package/src/pantallas/PantallaDeHistorial.tsx +293 -0
- package/src/pantallas/PantallaDePerfil.tsx +126 -0
- package/src/tema/ProveedorDeTema.tsx +150 -0
- package/src/tema/estilos.ts +51 -0
- package/src/tema/fuentes.ts +20 -0
- package/src/tema/index.ts +10 -0
- package/src/tema/paleta.ts +147 -0
- package/src/tema/tipografia.ts +29 -0
- package/src/texto.tsx +44 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { Controller } from "react-hook-form";
|
|
5
|
+
import CampoDeSeleccion, { CampoDeVarias } from "./CampoDeSeleccion";
|
|
6
|
+
import { CampoDeFecha, CampoDeFechaHora, CampoDeOpciones, CampoDeTelefono, CampoDeTexto, CampoInterruptor } from "./campos";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Los campos de `campos.tsx` ya atados a un formulario de react-hook-form: reciben `control` y
|
|
10
|
+
* `name` y se cuelgan su valor y su error. Así un formulario largo (un tracto, una caja, un
|
|
11
|
+
* operador) es una lista de campos y no una de `Controller`.
|
|
12
|
+
*
|
|
13
|
+
* Un campo propio de una app (un catálogo de su API, una dirección) se ata igual, con `CampoAtado`
|
|
14
|
+
* y `SinValor`.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/** Lo que un campo controlado recibe para atarse al formulario. */
|
|
18
|
+
|
|
19
|
+
/** Las props de un campo sin lo que pone el `Controller`. */
|
|
20
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
21
|
+
export function TextoControlado({
|
|
22
|
+
control,
|
|
23
|
+
name,
|
|
24
|
+
...props
|
|
25
|
+
}) {
|
|
26
|
+
return /*#__PURE__*/_jsx(Controller, {
|
|
27
|
+
name: name,
|
|
28
|
+
control: control,
|
|
29
|
+
render: ({
|
|
30
|
+
field: {
|
|
31
|
+
value,
|
|
32
|
+
onChange
|
|
33
|
+
},
|
|
34
|
+
fieldState
|
|
35
|
+
}) => /*#__PURE__*/_jsx(CampoDeTexto, {
|
|
36
|
+
...props,
|
|
37
|
+
// Un número del formulario (un conteo, un monto) también se escribe aquí: el
|
|
38
|
+
// TextInput sólo sabe de texto.
|
|
39
|
+
valor: value == null ? "" : String(value),
|
|
40
|
+
onCambiar: onChange,
|
|
41
|
+
error: fieldState.error?.message
|
|
42
|
+
})
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
export function InterruptorControlado({
|
|
46
|
+
control,
|
|
47
|
+
name,
|
|
48
|
+
...props
|
|
49
|
+
}) {
|
|
50
|
+
return /*#__PURE__*/_jsx(Controller, {
|
|
51
|
+
name: name,
|
|
52
|
+
control: control,
|
|
53
|
+
render: ({
|
|
54
|
+
field: {
|
|
55
|
+
value,
|
|
56
|
+
onChange
|
|
57
|
+
},
|
|
58
|
+
fieldState
|
|
59
|
+
}) => /*#__PURE__*/_jsx(CampoInterruptor, {
|
|
60
|
+
...props,
|
|
61
|
+
valor: Boolean(value),
|
|
62
|
+
onCambiar: onChange,
|
|
63
|
+
error: fieldState.error?.message
|
|
64
|
+
})
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
export function FechaControlada({
|
|
68
|
+
control,
|
|
69
|
+
name,
|
|
70
|
+
...props
|
|
71
|
+
}) {
|
|
72
|
+
return /*#__PURE__*/_jsx(Controller, {
|
|
73
|
+
name: name,
|
|
74
|
+
control: control,
|
|
75
|
+
render: ({
|
|
76
|
+
field: {
|
|
77
|
+
value,
|
|
78
|
+
onChange
|
|
79
|
+
},
|
|
80
|
+
fieldState
|
|
81
|
+
}) => /*#__PURE__*/_jsx(CampoDeFecha, {
|
|
82
|
+
...props,
|
|
83
|
+
valor: value ?? null,
|
|
84
|
+
onCambiar: onChange,
|
|
85
|
+
error: fieldState.error?.message
|
|
86
|
+
})
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
export function FechaHoraControlada({
|
|
90
|
+
control,
|
|
91
|
+
name,
|
|
92
|
+
...props
|
|
93
|
+
}) {
|
|
94
|
+
return /*#__PURE__*/_jsx(Controller, {
|
|
95
|
+
name: name,
|
|
96
|
+
control: control,
|
|
97
|
+
render: ({
|
|
98
|
+
field: {
|
|
99
|
+
value,
|
|
100
|
+
onChange
|
|
101
|
+
},
|
|
102
|
+
fieldState
|
|
103
|
+
}) => /*#__PURE__*/_jsx(CampoDeFechaHora, {
|
|
104
|
+
...props,
|
|
105
|
+
valor: value ?? null,
|
|
106
|
+
onCambiar: onChange,
|
|
107
|
+
error: fieldState.error?.message
|
|
108
|
+
})
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
export function OpcionesControladas({
|
|
112
|
+
control,
|
|
113
|
+
name,
|
|
114
|
+
...props
|
|
115
|
+
}) {
|
|
116
|
+
return /*#__PURE__*/_jsx(Controller, {
|
|
117
|
+
name: name,
|
|
118
|
+
control: control,
|
|
119
|
+
render: ({
|
|
120
|
+
field: {
|
|
121
|
+
value,
|
|
122
|
+
onChange
|
|
123
|
+
},
|
|
124
|
+
fieldState
|
|
125
|
+
}) => /*#__PURE__*/_jsx(CampoDeOpciones, {
|
|
126
|
+
...props,
|
|
127
|
+
valor: value ?? null,
|
|
128
|
+
onElegir: onChange,
|
|
129
|
+
error: fieldState.error?.message
|
|
130
|
+
})
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
export function SeleccionControlada({
|
|
134
|
+
control,
|
|
135
|
+
name,
|
|
136
|
+
...props
|
|
137
|
+
}) {
|
|
138
|
+
return /*#__PURE__*/_jsx(Controller, {
|
|
139
|
+
name: name,
|
|
140
|
+
control: control,
|
|
141
|
+
render: ({
|
|
142
|
+
field: {
|
|
143
|
+
value,
|
|
144
|
+
onChange
|
|
145
|
+
},
|
|
146
|
+
fieldState
|
|
147
|
+
}) => /*#__PURE__*/_jsx(CampoDeSeleccion, {
|
|
148
|
+
...props,
|
|
149
|
+
valor: value ?? null,
|
|
150
|
+
onElegir: onChange,
|
|
151
|
+
error: fieldState.error?.message
|
|
152
|
+
})
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
export function TelefonoControlado({
|
|
156
|
+
control,
|
|
157
|
+
name,
|
|
158
|
+
...props
|
|
159
|
+
}) {
|
|
160
|
+
return /*#__PURE__*/_jsx(Controller, {
|
|
161
|
+
name: name,
|
|
162
|
+
control: control,
|
|
163
|
+
render: ({
|
|
164
|
+
field: {
|
|
165
|
+
value,
|
|
166
|
+
onChange
|
|
167
|
+
},
|
|
168
|
+
fieldState
|
|
169
|
+
}) => /*#__PURE__*/_jsx(CampoDeTelefono, {
|
|
170
|
+
...props,
|
|
171
|
+
valor: value ?? null,
|
|
172
|
+
onCambiar: onChange,
|
|
173
|
+
error: fieldState.error?.message
|
|
174
|
+
})
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
export function VariasControladas({
|
|
178
|
+
control,
|
|
179
|
+
name,
|
|
180
|
+
...props
|
|
181
|
+
}) {
|
|
182
|
+
return /*#__PURE__*/_jsx(Controller, {
|
|
183
|
+
name: name,
|
|
184
|
+
control: control,
|
|
185
|
+
render: ({
|
|
186
|
+
field: {
|
|
187
|
+
value,
|
|
188
|
+
onChange
|
|
189
|
+
},
|
|
190
|
+
fieldState
|
|
191
|
+
}) => /*#__PURE__*/_jsx(CampoDeVarias, {
|
|
192
|
+
...props,
|
|
193
|
+
valor: value ?? [],
|
|
194
|
+
onElegir: onChange,
|
|
195
|
+
error: fieldState.error?.message
|
|
196
|
+
})
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=controlados.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Controller","CampoDeSeleccion","CampoDeVarias","CampoDeFecha","CampoDeFechaHora","CampoDeOpciones","CampoDeTelefono","CampoDeTexto","CampoInterruptor","jsx","_jsx","TextoControlado","control","name","props","render","field","value","onChange","fieldState","valor","String","onCambiar","error","message","InterruptorControlado","Boolean","FechaControlada","FechaHoraControlada","OpcionesControladas","onElegir","SeleccionControlada","TelefonoControlado","VariasControladas"],"sourceRoot":"../../../src","sources":["formularios/controlados.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/** Si un texto es una página HTML y no un mensaje. */
|
|
4
|
+
const pareceHtml = texto => /^\s*</.test(texto) || /<(html|body|head)[\s>]/i.test(texto);
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* El mensaje que el backend mandó, listo para enseñárselo al usuario.
|
|
8
|
+
*
|
|
9
|
+
* Los errores de los backends de ACV salen de `drf_simple_api_errors`, que responde
|
|
10
|
+
* `{ title, detail?: string[], invalid_params?: [{ name, reason: string[] }] }`. Llegan en dos
|
|
11
|
+
* formas y se leen las dos:
|
|
12
|
+
*
|
|
13
|
+
* - `detail`: los errores de regla, que no cuelgan de un campo (el orden de los pasos, «falta lo
|
|
14
|
+
* que la acción pide»). Si vienen varios se juntan todos, uno por renglón: enseñar sólo el
|
|
15
|
+
* primero obligaba a corregir y reintentar para descubrir el siguiente.
|
|
16
|
+
* - `invalid_params`: los de un campo (`clave`, `lng`, `fecha_real`), cada uno con su motivo.
|
|
17
|
+
*
|
|
18
|
+
* `title` es la etiqueta del tipo de error («Validation error.»), que sola no le dice nada a
|
|
19
|
+
* nadie: sólo se usa si no hay nada más.
|
|
20
|
+
*
|
|
21
|
+
* Sirve para el feedback de una acción —un aviso, Pendientes—, no para pintar errores en los
|
|
22
|
+
* campos de un formulario: eso lo hace `setErrors` con `invalid_params`.
|
|
23
|
+
*/
|
|
24
|
+
export const mensajeDeError = (error, fallback) => {
|
|
25
|
+
const data = error?.data;
|
|
26
|
+
if (typeof data === "string" && data) {
|
|
27
|
+
// Una página de error de un proxy (un 413 o un 502 de nginx) llega como `PARSING_ERROR`
|
|
28
|
+
// con el HTML en `data`: enseñarla tal cual llenaba Pendientes de etiquetas. Va el
|
|
29
|
+
// mensaje genérico con el código.
|
|
30
|
+
if (pareceHtml(data)) {
|
|
31
|
+
const codigo = error?.originalStatus ?? error?.status;
|
|
32
|
+
return typeof codigo === "number" ? `${fallback} (error ${codigo})` : fallback;
|
|
33
|
+
}
|
|
34
|
+
return data;
|
|
35
|
+
}
|
|
36
|
+
if (data && typeof data === "object") {
|
|
37
|
+
const renglones = [];
|
|
38
|
+
if (Array.isArray(data.detail)) renglones.push(...data.detail.map(String));else if (typeof data.detail === "string" && data.detail) renglones.push(data.detail);
|
|
39
|
+
for (const param of Array.isArray(data.invalid_params) ? data.invalid_params : []) {
|
|
40
|
+
const razon = Array.isArray(param?.reason) ? param.reason.join(" ") : param?.reason;
|
|
41
|
+
if (razon) renglones.push(String(razon));
|
|
42
|
+
}
|
|
43
|
+
const limpios = renglones.map(r => r.trim()).filter(Boolean);
|
|
44
|
+
if (limpios.length) return limpios.join("\n");
|
|
45
|
+
if (typeof data.title === "string" && data.title) return data.title;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Un `Error` de la propia app (p. ej. el dispositivo no sabe compartir archivos) no trae
|
|
49
|
+
// `data`: su mensaje ya está escrito para el usuario.
|
|
50
|
+
if (typeof error?.message === "string" && error.message) return error.message;
|
|
51
|
+
return fallback;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Vuelca los motivos de un 400 sobre los campos del formulario.
|
|
56
|
+
*
|
|
57
|
+
* El backend responde en RFC 7807 (`invalid_params: [{ name, reason }]`). Un campo suelto trae
|
|
58
|
+
* su motivo como lista de textos y se cuelga de su nombre tal cual. Una **lista editable**
|
|
59
|
+
* (`useFieldArray`) trae en su lugar un objeto por renglón —vacío si ese
|
|
60
|
+
* renglón está bien—, que es como DRF reporta un serializador anidado `many=True`; ahí el motivo
|
|
61
|
+
* va a `lista.<índice>.<campo>`, que es justo como se llaman los inputs de la fila, para que se
|
|
62
|
+
* pinte sobre el campo que falla.
|
|
63
|
+
*
|
|
64
|
+
* Sin ese segundo caso el error quedaba a nombre de la lista entera, donde no hay ningún input
|
|
65
|
+
* registrado: quien capturaba sólo veía el aviso genérico de que no se pudo guardar. Es la misma
|
|
66
|
+
* traducción que hace el portal (`setErrors` de @acvl/frontend-components), así que la forma de
|
|
67
|
+
* la respuesta es una sola para los dos clientes.
|
|
68
|
+
*/
|
|
69
|
+
export const setErrors = (form, error) => {
|
|
70
|
+
// Sin respuesta (una falla de red) o un 400 de regla sin campos (`invalid_params: null`): no
|
|
71
|
+
// hay nada que colgar de los campos, y quien llama ya enseña el aviso general.
|
|
72
|
+
const params = error?.data?.invalid_params;
|
|
73
|
+
if (!params || typeof params !== "object") return;
|
|
74
|
+
Object.values(params).forEach(param => {
|
|
75
|
+
const porRenglon = Array.isArray(param.reason) && param.reason.length > 0 && param.reason.every(renglon => typeof renglon === "object" && renglon !== null && !Array.isArray(renglon));
|
|
76
|
+
if (porRenglon) {
|
|
77
|
+
param.reason.forEach((renglon, indice) => {
|
|
78
|
+
Object.entries(renglon).forEach(([campo, motivos]) => {
|
|
79
|
+
form.setError(`${param.name}.${indice}.${campo}`, {
|
|
80
|
+
message: Array.isArray(motivos) ? motivos.join(", ") : String(motivos)
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
form.setError(param.name, {
|
|
87
|
+
message: Array.isArray(param.reason) ? param.reason.join(", ") : param.reason
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=errores.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["pareceHtml","texto","test","mensajeDeError","error","fallback","data","codigo","originalStatus","status","renglones","Array","isArray","detail","push","map","String","param","invalid_params","razon","reason","join","limpios","r","trim","filter","Boolean","length","title","message","setErrors","form","params","Object","values","forEach","porRenglon","every","renglon","indice","entries","campo","motivos","setError","name"],"sourceRoot":"../../../src","sources":["formularios/errores.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { router } from "expo-router";
|
|
4
|
+
import React from "react";
|
|
5
|
+
import { avisar } from "../dialogos/dialogos";
|
|
6
|
+
import { mensajeDeError, setErrors } from "./errores";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Lo que comparten los formularios de edición: cómo se compara lo capturado contra lo que vino,
|
|
10
|
+
* cómo se lee un rechazo del servidor y cómo se guarda.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/** Un texto anulable como se manda: sin espacios a los lados, y vacío es `null`. */
|
|
14
|
+
export const textoONulo = texto => {
|
|
15
|
+
const limpio = (texto ?? "").trim();
|
|
16
|
+
return limpio ? limpio : null;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
/** Una fecha como se manda: ISO **con su hora** (la hora es el dato), o `null`. */
|
|
20
|
+
export const isoONulo = fecha => fecha ? fecha.toISOString() : null;
|
|
21
|
+
|
|
22
|
+
/** Una fecha del servidor como la captura el formulario. */
|
|
23
|
+
export const fechaONula = iso => iso ? new Date(iso) : null;
|
|
24
|
+
|
|
25
|
+
/** Si dos instantes son el mismo; dos nulos también lo son. */
|
|
26
|
+
export const mismoInstante = (a, b) => (a?.getTime() ?? null) === (b?.getTime() ?? null);
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Cuelga de cada campo el motivo con el que el servidor lo rechazó (`invalid_params`). Sólo si
|
|
30
|
+
* vienen como lista: un 400 de regla trae `detail` y `invalid_params` nulo, y `setErrors` no lo
|
|
31
|
+
* aguanta. Lo que no es de un campo lo dice quien llama, con `mensajeDeError`.
|
|
32
|
+
*/
|
|
33
|
+
export const volcarErrores = (form, error) => {
|
|
34
|
+
const data = error?.data;
|
|
35
|
+
if (data && Array.isArray(data.invalid_params)) setErrors(form, error);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Guardar un formulario de edición, igual en todos: si nada cambió, sólo se regresa; si el
|
|
40
|
+
* servidor lo rechaza, cada motivo se cuelga de su campo (`volcarErrores`), el mensaje queda
|
|
41
|
+
* abajo del formulario (`error`) y se avisa. Al guardar, regresa a la pantalla de antes.
|
|
42
|
+
*/
|
|
43
|
+
export function useGuardado(form) {
|
|
44
|
+
const [error, setError] = React.useState(null);
|
|
45
|
+
const guardar = async (cambios, mandar) => {
|
|
46
|
+
if (Object.keys(cambios).length === 0) {
|
|
47
|
+
router.back();
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
setError(null);
|
|
51
|
+
try {
|
|
52
|
+
await mandar();
|
|
53
|
+
router.back();
|
|
54
|
+
} catch (falla) {
|
|
55
|
+
volcarErrores(form, falla);
|
|
56
|
+
const mensaje = mensajeDeError(falla, "Revisa la señal e intenta de nuevo.");
|
|
57
|
+
setError(mensaje);
|
|
58
|
+
await avisar({
|
|
59
|
+
titulo: "No se guardó",
|
|
60
|
+
mensaje,
|
|
61
|
+
icono: "alert-circle-outline"
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
return {
|
|
66
|
+
error,
|
|
67
|
+
guardar
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* De dos cuerpos completos —lo que se mandaría con lo que vino y con lo capturado—, sólo las
|
|
73
|
+
* llaves que cambiaron, como el `formParser` del portal: un `PATCH` con todo pisaría lo que alguien
|
|
74
|
+
* cambió en el portal mientras la pantalla estaba abierta. Compara por valor (`JSON`), así que
|
|
75
|
+
* sirve con listas y objetos (los contactos, una dirección).
|
|
76
|
+
*/
|
|
77
|
+
export const soloLoQueCambio = (antes, despues) => Object.fromEntries(Object.entries(despues).filter(([llave, valor]) => JSON.stringify(valor) !== JSON.stringify(antes[llave])));
|
|
78
|
+
//# sourceMappingURL=guardado.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["router","React","avisar","mensajeDeError","setErrors","textoONulo","texto","limpio","trim","isoONulo","fecha","toISOString","fechaONula","iso","Date","mismoInstante","a","b","getTime","volcarErrores","form","error","data","Array","isArray","invalid_params","useGuardado","setError","useState","guardar","cambios","mandar","Object","keys","length","back","falla","mensaje","titulo","icono","soloLoQueCambio","antes","despues","fromEntries","entries","filter","llave","valor","JSON","stringify"],"sourceRoot":"../../../src","sources":["formularios/guardado.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,aAAa;AACpC,OAAOC,KAAK,MAAM,OAAO;AAEzB,SAASC,MAAM,QAAQ,sBAAsB;AAC7C,SAASC,cAAc,EAAEC,SAAS,QAAQ,WAAW;;AAErD;AACA;AACA;AACA;;AAEA;AACA,OAAO,MAAMC,UAAU,GAAIC,KAAgC,IAAoB;EAC3E,MAAMC,MAAM,GAAG,CAACD,KAAK,IAAI,EAAE,EAAEE,IAAI,CAAC,CAAC;EACnC,OAAOD,MAAM,GAAGA,MAAM,GAAG,IAAI;AACjC,CAAC;;AAED;AACA,OAAO,MAAME,QAAQ,GAAIC,KAAkB,IAAqBA,KAAK,GAAGA,KAAK,CAACC,WAAW,CAAC,CAAC,GAAG,IAAK;;AAEnG;AACA,OAAO,MAAMC,UAAU,GAAIC,GAA8B,IACrDA,GAAG,GAAG,IAAIC,IAAI,CAACD,GAAG,CAAC,GAAG,IAAI;;AAE9B;AACA,OAAO,MAAME,aAAa,GAAGA,CAACC,CAAc,EAAEC,CAAc,KACxD,CAACD,CAAC,EAAEE,OAAO,CAAC,CAAC,IAAI,IAAI,OAAOD,CAAC,EAAEC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;;AAErD;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAGA,CAAwBC,IAAsB,EAAEC,KAAc,KAAK;EAC5F,MAAMC,IAAI,GAAID,KAAK,EAAqDC,IAAI;EAC5E,IAAIA,IAAI,IAAIC,KAAK,CAACC,OAAO,CAACF,IAAI,CAACG,cAAc,CAAC,EAAErB,SAAS,CAACgB,IAAI,EAAEC,KAAK,CAAC;AAC1E,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,SAASK,WAAWA,CAAwBN,IAAsB,EAAE;EACvE,MAAM,CAACC,KAAK,EAAEM,QAAQ,CAAC,GAAG1B,KAAK,CAAC2B,QAAQ,CAAgB,IAAI,CAAC;EAC7D,MAAMC,OAAO,GAAG,MAAAA,CAAOC,OAAe,EAAEC,MAA8B,KAAK;IACvE,IAAIC,MAAM,CAACC,IAAI,CAACH,OAAO,CAAC,CAACI,MAAM,KAAK,CAAC,EAAE;MACnClC,MAAM,CAACmC,IAAI,CAAC,CAAC;MACb;IACJ;IACAR,QAAQ,CAAC,IAAI,CAAC;IACd,IAAI;MACA,MAAMI,MAAM,CAAC,CAAC;MACd/B,MAAM,CAACmC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC,OAAOC,KAAK,EAAE;MACZjB,aAAa,CAACC,IAAI,EAAEgB,KAAK,CAAC;MAC1B,MAAMC,OAAO,GAAGlC,cAAc,CAACiC,KAAK,EAAE,qCAAqC,CAAC;MAC5ET,QAAQ,CAACU,OAAO,CAAC;MACjB,MAAMnC,MAAM,CAAC;QAAEoC,MAAM,EAAE,cAAc;QAAED,OAAO;QAAEE,KAAK,EAAE;MAAuB,CAAC,CAAC;IACpF;EACJ,CAAC;EACD,OAAO;IAAElB,KAAK;IAAEQ;EAAQ,CAAC;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMW,eAAe,GAAGA,CAAoCC,KAAQ,EAAEC,OAAU,KACnFV,MAAM,CAACW,WAAW,CACdX,MAAM,CAACY,OAAO,CAACF,OAAO,CAAC,CAACG,MAAM,CAC1B,CAAC,CAACC,KAAK,EAAEC,KAAK,CAAC,KAAKC,IAAI,CAACC,SAAS,CAACF,KAAK,CAAC,KAAKC,IAAI,CAACC,SAAS,CAACR,KAAK,CAACK,KAAK,CAAC,CAC7E,CACJ,CAAe","ignoreList":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from "react";
|
|
4
|
+
|
|
5
|
+
/** Lo que tarda en buscar después de la última tecla: no una petición por letra. */
|
|
6
|
+
const PAUSA_MS = 300;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Un buscador que pide al servidor: `[texto, busqueda, setTexto]`. `texto` es lo escrito, al
|
|
10
|
+
* momento, para el campo; `busqueda` es lo mismo sin espacios a los lados y **300 ms después de la
|
|
11
|
+
* última tecla**, para la consulta.
|
|
12
|
+
*/
|
|
13
|
+
export function useBusqueda() {
|
|
14
|
+
const [texto, setTexto] = React.useState("");
|
|
15
|
+
const [busqueda, setBusqueda] = React.useState("");
|
|
16
|
+
React.useEffect(() => {
|
|
17
|
+
const espera = setTimeout(() => setBusqueda(texto.trim()), PAUSA_MS);
|
|
18
|
+
return () => clearTimeout(espera);
|
|
19
|
+
}, [texto]);
|
|
20
|
+
return [texto, busqueda, setTexto];
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=useBusqueda.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","PAUSA_MS","useBusqueda","texto","setTexto","useState","busqueda","setBusqueda","useEffect","espera","setTimeout","trim","clearTimeout"],"sourceRoot":"../../../src","sources":["formularios/useBusqueda.ts"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;;AAEzB;AACA,MAAMC,QAAQ,GAAG,GAAG;;AAEpB;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAAA,EAA8C;EACrE,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGJ,KAAK,CAACK,QAAQ,CAAC,EAAE,CAAC;EAC5C,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGP,KAAK,CAACK,QAAQ,CAAC,EAAE,CAAC;EAClDL,KAAK,CAACQ,SAAS,CAAC,MAAM;IAClB,MAAMC,MAAM,GAAGC,UAAU,CAAC,MAAMH,WAAW,CAACJ,KAAK,CAACQ,IAAI,CAAC,CAAC,CAAC,EAAEV,QAAQ,CAAC;IACpE,OAAO,MAAMW,YAAY,CAACH,MAAM,CAAC;EACrC,CAAC,EAAE,CAACN,KAAK,CAAC,CAAC;EACX,OAAO,CAACA,KAAK,EAAEG,QAAQ,EAAEF,QAAQ,CAAC;AACtC","ignoreList":[]}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// Elegir un documento para subirlo, o preguntar de dónde (cámara, galería o documento). Contesta lo
|
|
4
|
+
// elegido ya listo para el `FormData`; qué se hace con él es de quien llama. La cámara y la
|
|
5
|
+
// galería solas están en `camara/`, que no pide expo-document-picker.
|
|
6
|
+
import * as DocumentPicker from "expo-document-picker";
|
|
7
|
+
import { File } from "expo-file-system";
|
|
8
|
+
import { elegirDeGaleria, tomarFoto } from "../camara/elegir";
|
|
9
|
+
import { reducirImagenAdjunta } from "../camara/reducir";
|
|
10
|
+
import { avisar, mostrarDialogo } from "../dialogos/dialogos";
|
|
11
|
+
|
|
12
|
+
/** El tope de un archivo en el servidor (`ConArchivoSubido.TAMANO_MAXIMO`): 25 MB. */
|
|
13
|
+
export const TAMANO_MAXIMO_BYTES = 25 * 1024 * 1024;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Lo que el servidor acepta de un adjunto (`core/shared/serializers.py`): PDF, imágenes y hojas de
|
|
17
|
+
* cálculo. Lo demás ni se ofrece en el selector.
|
|
18
|
+
*/
|
|
19
|
+
export const TIPOS_DE_ADJUNTO = ["application/pdf", "image/*", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "application/vnd.ms-excel", "text/csv"];
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Documentos (un PDF, una foto ya escaneada). Uno más pesado que el tope del servidor se rechaza al
|
|
23
|
+
* subirlo, así que se avisa aquí y se deja fuera. Una imagen adjuntada como archivo también se
|
|
24
|
+
* reduce, igual que una de la cámara.
|
|
25
|
+
*/
|
|
26
|
+
export async function elegirDocumentos({
|
|
27
|
+
tipos = TIPOS_DE_ADJUNTO,
|
|
28
|
+
varias = false,
|
|
29
|
+
tamanoMaximo = TAMANO_MAXIMO_BYTES
|
|
30
|
+
} = {}) {
|
|
31
|
+
const resultado = await DocumentPicker.getDocumentAsync({
|
|
32
|
+
type: tipos,
|
|
33
|
+
multiple: varias,
|
|
34
|
+
copyToCacheDirectory: true
|
|
35
|
+
});
|
|
36
|
+
if (resultado.canceled) return [];
|
|
37
|
+
const elegidos = [];
|
|
38
|
+
for (const doc of resultado.assets) {
|
|
39
|
+
const pesa = doc.size ?? new File(doc.uri).size;
|
|
40
|
+
if (pesa > tamanoMaximo) {
|
|
41
|
+
await avisar({
|
|
42
|
+
titulo: "Archivo demasiado pesado",
|
|
43
|
+
mensaje: `«${doc.name}» pesa ${(pesa / (1024 * 1024)).toFixed(1)} MB y el tope son ` + `${tamanoMaximo / (1024 * 1024)} MB. Elige uno más ligero o tómale una foto.`,
|
|
44
|
+
icono: "file-alert-outline"
|
|
45
|
+
});
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
const tipo = doc.mimeType ?? "application/octet-stream";
|
|
49
|
+
const esFoto = tipo.startsWith("image/");
|
|
50
|
+
const archivo = esFoto ? await reducirImagenAdjunta({
|
|
51
|
+
uri: doc.uri,
|
|
52
|
+
nombre: doc.name,
|
|
53
|
+
tipo
|
|
54
|
+
}) : {
|
|
55
|
+
uri: doc.uri,
|
|
56
|
+
nombre: doc.name,
|
|
57
|
+
tipo
|
|
58
|
+
};
|
|
59
|
+
elegidos.push({
|
|
60
|
+
...archivo,
|
|
61
|
+
esFoto
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
return elegidos;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Pregunta de dónde (cámara, galería o un documento) y elige uno. Contesta `null` si se canceló en
|
|
69
|
+
* cualquier paso o el archivo no se puede subir (y ya se dijo por qué).
|
|
70
|
+
*/
|
|
71
|
+
export async function elegirAdjunto({
|
|
72
|
+
titulo = "Subir un archivo",
|
|
73
|
+
permiso,
|
|
74
|
+
tipos
|
|
75
|
+
}) {
|
|
76
|
+
const origen = await mostrarDialogo({
|
|
77
|
+
titulo,
|
|
78
|
+
icono: "paperclip",
|
|
79
|
+
botones: [{
|
|
80
|
+
texto: "Tomar una foto",
|
|
81
|
+
icono: "camera-outline",
|
|
82
|
+
estilo: "principal",
|
|
83
|
+
valor: "camara"
|
|
84
|
+
}, {
|
|
85
|
+
texto: "De la galería",
|
|
86
|
+
icono: "image-outline",
|
|
87
|
+
estilo: "secundario",
|
|
88
|
+
valor: "galeria"
|
|
89
|
+
}, {
|
|
90
|
+
texto: "Un documento",
|
|
91
|
+
icono: "file-document-outline",
|
|
92
|
+
estilo: "secundario",
|
|
93
|
+
valor: "documento"
|
|
94
|
+
}, {
|
|
95
|
+
texto: "Cancelar",
|
|
96
|
+
estilo: "cancelar",
|
|
97
|
+
valor: null
|
|
98
|
+
}]
|
|
99
|
+
});
|
|
100
|
+
const elegidos = origen === "camara" ? await tomarFoto(permiso) : origen === "galeria" ? await elegirDeGaleria() : origen === "documento" ? await elegirDocumentos({
|
|
101
|
+
tipos
|
|
102
|
+
}) : [];
|
|
103
|
+
return elegidos[0] ?? null;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=elegir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DocumentPicker","File","elegirDeGaleria","tomarFoto","reducirImagenAdjunta","avisar","mostrarDialogo","TAMANO_MAXIMO_BYTES","TIPOS_DE_ADJUNTO","elegirDocumentos","tipos","varias","tamanoMaximo","resultado","getDocumentAsync","type","multiple","copyToCacheDirectory","canceled","elegidos","doc","assets","pesa","size","uri","titulo","mensaje","name","toFixed","icono","tipo","mimeType","esFoto","startsWith","archivo","nombre","push","elegirAdjunto","permiso","origen","botones","texto","estilo","valor"],"sourceRoot":"../../../src","sources":["fotos/elegir.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// `@acvl/mobile-components/fotos`: tomar y elegir fotos y archivos. Va aparte de la entrada
|
|
4
|
+
// principal porque usa expo-image-picker, expo-image-manipulator, expo-document-picker y
|
|
5
|
+
// expo-file-system, que sólo instala la app que sube archivos. Lo de la cámara sola (sin
|
|
6
|
+
// documentos) está también en `camara`.
|
|
7
|
+
export * from "../camara";
|
|
8
|
+
export { elegirAdjunto, elegirDocumentos, TAMANO_MAXIMO_BYTES, TIPOS_DE_ADJUNTO } from "./elegir";
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["elegirAdjunto","elegirDocumentos","TAMANO_MAXIMO_BYTES","TIPOS_DE_ADJUNTO"],"sourceRoot":"../../../src","sources":["fotos/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA,cAAc,WAAW;AACzB,SAASA,aAAa,EAAEC,gBAAgB,EAAEC,mBAAmB,EAAEC,gBAAgB,QAAQ,UAAU","ignoreList":[]}
|