Saltar a contenido

Autor: Adalberto González

Fecha creacion: 2026-05-26
Estado: desarrollo
Tipo: componente

Componente: DireccionEstandarizadaComponent

Selector: app-direccion-estandarizada
Ubicación: src/app/components/direccion-estandarizada/
Acceso: Público (Todos)


¿Qué hace?

Es un modal flotante que ayuda a los usuarios a estandarizar y saber si una dirección esta bien escrita, segun la nomenclatura colombiana (urbana o rural). Ofrece dos modos: texto libre con parsing automático en tiempo real, y constructor guiado campo por campo. Al confirmar, emite la cadena estandarizada para que el componente padre la use o la copie al portapapeles.


Decoradores

Decorador Nombre Tipo Descripción
@Output cerrar EventEmitter<void> Se emite cuando el usuario cierra el modal
@Output direccionLista EventEmitter<string> Se emite con la dirección estandarizada al pulsar "Usar"

Propiedades clave

Propiedad Tipo Descripción
modo Signal<'libre' \| 'constructor'> Controla qué panel se muestra al usuario
parsedAddress Signal<Partial<ParsedAddress> \| null> Resultado del parser; alimenta la sección de resultado y el desglose
form FormDir Objeto mutable con todos los campos del constructor; tiene index signature para el binding dinámico de complementos
desgloseFilas Signal<{clave, valor}[]> Filas del desglose; bifurca entre campos urbanos y rurales según parsedAddress().zona
colorConf Signal<string> Color CSS según confianza: verde ≥80, naranja ≥50, rojo <50
tipoGenActivo Signal<boolean> Habilita el selector de tipo de vía generadora en el constructor
masAbierto Signal<boolean> Muestra/oculta los complementos extra (bloque, casa, interior…)
libre$ Subject<string> Canal RxJS con debounceTime(300) para no parsear en cada tecla

Servicios y endpoints

Servicio Método Endpoint Cuándo
AddressParserService parse(raw) En cada cambio de texto libre (con debounce de 300 ms)
AddressParserService buildAddress(f) En cada cambio de campo en el constructor

Flujo principal

Usuario abre modal desde floating-bar
  -> modo = 'libre' (default)

Modo libre:
  onInputLibre(v)
    -> libre$.next(v)
    -> debounce 300ms
    -> parser.parse(v)
    -> parsedAddress.set(resultado)
    -> desglose / confianza / barra se actualizan por computed()

Modo constructor:
  onConstructorChange()
    -> parser.buildAddress(form)  [construye string]
    -> parsedAddress.set({ ...form, direccionEstandarizada, confianza })

Ambos modos:
  usarDireccion()
    -> direccionLista.emit(direccionEstandarizada)
    -> cerrar.emit()

Historial de cambios

Fecha Autor Cambio
2026-05-26 Adalberto González Creación del módulo

Observaciones

Deuda técnica, comportamientos no obvios, decisiones de diseño que no se ven en el código.

  • Hay cierto tipo de direccines que no es estan contempladas en el manual, lo cual puede dar con un resultado diferente.