declarative-forms es una librería de JavaScript que redefine cómo se construyen formularios modales en la web. A diferencia de las bibliotecas tradicionales, que obligan a montar un componente y gestionar su estado dentro del árbol de la aplicación, declarative-forms propone una única función, ask(), capaz de abrir un diálogo y devolver un objeto plano con los valores introducidos por el usuario.
La idea central toma como referencia la función nativa prompt() del navegador: una llamada, un cuadro de diálogo dibujado por el sistema y una respuesta. La limitación de prompt() es que solo acepta una cadena de texto; declarative-forms conserva esa forma de uso y elimina la restricción, permitiendo describir un registro completo con campos de distintos tipos (texto, área de texto, selectores simples o múltiples, casillas de verificación, tarjetas, matrices de elementos, mensajes derivados o campos computados) y obtener de vuelta un objeto con todos los datos.
La librería se ocupa automáticamente de aspectos habituales en el desarrollo de formularios: la representación visual del diálogo, la carga asíncrona de opciones dependientes de otros campos, la reactividad que muestra u oculta campos según los valores introducidos, la validación y la sincronización entre campos. También incorpora conceptos avanzados como la recarga automática de listas al cambiar un campo dependiente, la apertura de diálogos anidados que comparten contexto y el cálculo de campos derivados a partir del estado del formulario.
El proyecto resulta útil para desarrolladores que necesitan recoger datos estructurados del usuario desde cualquier punto del código sin configurar un sistema de componentes completo. Entre los casos de uso típicos se encuentran flujos de publicación con pestañas (título, notas, visibilidad, créditos), ventanas de programación con campos condicionales, selección de revisores dependientes del equipo y diálogos anidados que modifican un formulario abierto debajo. Su enfoque declarativo reduce el código necesario para describir comportamientos complejos y elimina la necesidad de gestionar manualmente el ciclo de vida del formulario.
