Dynamic Form es una librería en JavaScript que permite crear formularios personalizados de manera dinámica, gestionar los datos en tiempo real y exportar las respuestas.
Instala la librería desde npm:
npm install @dynamicfrm/jsAquí tienes una versión mejorada y estructurada para la documentación de los campos disponibles en la librería Dynamic Form:
La librería Dynamic Form permite una gran flexibilidad al construir formularios personalizados, ofreciendo una variedad de tipos de campos. A continuación se detallan las opciones disponibles, sus propiedades y configuraciones:
-
text-title:- Descripción: Campo de texto utilizado para títulos de sección o encabezados principales.
- Propiedad:
name(nombre del campo).
-
text-subtitle:- Descripción: Campo de texto para subtítulos o encabezados secundarios.
- Propiedad:
name(nombre del campo).
-
text-paragraph:- Descripción: Campo de texto extenso ideal para párrafos descriptivos o informativos.
- Propiedad:
name(nombre del campo).
-
text-field:- Descripción: Campo de texto simple, adecuado para respuestas cortas o entradas de usuario.
- Propiedad:
name(nombre del campo).
-
list-field:- Descripción: Lista desplegable para seleccionar una única opción.
- Propiedades:
name: Nombre del campo.options: Array de opciones personalizables, ej.,["Opción 1", "Opción 2", "Opción 3"].
-
list-multiply-field:- Descripción: Lista de selección múltiple que permite elegir varias opciones.
- Propiedades:
name: Nombre del campo.options: Array de opciones personalizables, ej.,["Opción 1", "Opción 2", "Opción 3"].
date-field:- Descripción: Campo para seleccionar una fecha específica.
- Propiedad:
name(nombre del campo).
-
qr-field:- Descripción: Genera un código QR que redirige a una URL específica.
- Propiedades:
name: Nombre del campo.url: URL que se codificará en el QR.
-
yt-video:- Descripción: Inserta un video de YouTube embebido en el formulario.
- Propiedades:
url: URL del video en YouTube.
-
email-field:- Descripción: Campo para ingresar o mostrar una dirección de correo electrónico.
- Propiedades:
email: Correo electrónico asociado.subject: Asunto opcional del correo electrónico.
-
fb-field:- Descripción: Enlace de redirección a un perfil o página de Facebook.
- Propiedades:
url: URL del enlace de Facebook.
Cada campo puede configurarse fácilmente mediante un objeto JSON. A continuación se muestra un ejemplo de configuración para un campo de selección simple:
{
"field": "list-field",
"name": "Seleccione una opción",
"options": ["Opción 1", "Opción 2", "Opción 3"]
}Importa y configura una nueva instancia de DynamicForm con el UUID del formulario.
import DynamicForm from "@dynamicfrm/js";
const form = new DynamicForm('113c751d-d0ed-44f0-b141-46b4fa4a6972');Para crear un formulario, añade campos usando addField(). Cada campo debe especificar un type y un name.
form
.addField({
type: 'text-title',
name: 'Formulario'
})
.addField({
type: 'text-field',
name: 'Nombre completo'
})
.addField({
type: 'date-field',
name: 'Fecha de nacimiento'
});
const { url, error } = await form.createFormulary();
console.log(url, error); // URL: https://www.dynamicform.site/113c751d-d0ed-44f0-b141-46b4fa4a6972Salida esperada:
url: la URL donde se puede acceder al formulario creado (https://www.dynamicform.site/{uuid}).error: cualquier error que ocurra durante la creación.
Recupera los datos de un formulario existente utilizando getFormulary().
const { formulary, error } = await form.getFormulary();
console.log(formulary, error);Salida esperada:
formulary: objeto que contiene la estructura del formulario.error: cualquier error que ocurra al intentar obtener el formulario.
Usa getAnswers() para obtener las respuestas enviadas por los usuarios.
const { answers, error } = await form.getAnswers();
console.log(answers, error);Salida esperada:
answers: array de respuestas enviadas, con cada campo y valor correspondiente.error: cualquier error durante la consulta de respuestas.
Para enviar respuestas al formulario, usa createAnswers(). Define un array de respuestas donde cada respuesta tiene un uuid y una lista de fields.
const answers = [
{
uuid: '113c751d-d0ed-44f0-b141-46b4fa4a6972',
fields: [
{
value: 'Juanito Alimaña',
index: 1
},
{
value: '26/12/2024',
index: 2
}
]
}
];
const { responses, error } = await form.createAnswers(answers);
console.log(responses, error);Salida esperada:
responses: confirmación de que las respuestas fueron enviadas correctamente.error: cualquier error que ocurra al enviar las respuestas.
-
addField({ type, name }): añade un campo al formulario.- type: tipo de campo (ej.
text-title,text-field,date-field). - name: nombre del campo.
- type: tipo de campo (ej.
-
createFormulary(): crea y publica el formulario.- Salida:
{ url, error }
- Salida:
-
getFormulary(): obtiene la estructura del formulario existente.- Salida:
{ formulary, error }
- Salida:
-
getAnswers(): recupera todas las respuestas enviadas.- Salida:
{ answers, error }
- Salida:
-
createAnswers(answers): envía respuestas al formulario.- Parámetro:
answers- array con respuestas y valores de campos. - Salida:
{ responses, error }
- Parámetro:
import DynamicForm from "@dynamicfrm/js";
const form = new DynamicForm('113c751d-d0ed-44f0-b141-46b4fa4a6972');
// Crear el formulario
form
.addField({ type: 'text-title', name: 'Formulario' })
.addField({ type: 'text-field', name: 'Nombre completo' })
.addField({ type: 'date-field', name: 'Fecha de nacimiento' });
const { url } = await form.createFormulary();
console.log('URL del formulario:', url); // URL: https://www.dynamicform.site/113c751d-d0ed-44f0-b141-46b4fa4a6972
// Obtener el formulario
const { formulary } = await form.getFormulary();
console.log('Formulario:', formulary);
// Enviar respuestas
const answers = [
{
uuid: '113c751d-d0ed-44f0-b141-46b4fa4a6972',
fields: [
{ value: 'Juanito Alimaña', index: 1 },
{ value: '26/12/2024', index: 2 }
]
}
];
const { responses } = await form.createAnswers(answers);
console.log('Respuestas enviadas:', responses);