Saltar al contenido principal
Dashboard > Actions > Forms > Campo personalizado
Con el campo personalizado, puede ampliar la apariencia y la funcionalidad de sus formularios, y añadir una lógica potente con JavaScript, HTML y CSS. El campo personalizado incluye métodos internos para facilitar el envío de datos al formulario, añadir validaciones de frontend y backend, y gestionar eventos comunes como focus o blur. Puede usar el campo personalizado para crear:
  • Campos con una estructura de datos personalizada.
    • Ejemplo: Objetos, matrices de cadenas
  • Campos que usan widgets de terceros.
    • Ejemplo: Autocompletado de direcciones de Google
  • Campos con lógica para ocultar o mostrar otros campos.
  • Campos que requieren API externas para obtener un valor.
Para usar campos personalizados, debe habilitar dominios personalizados. Si renderiza un formulario con un campo personalizado fuera de un dominio personalizado, se mostrará un error.

Configuración de campos personalizados

La configuración de los campos personalizados es la siguiente:

Parámetros

Agregue pares clave-valor para hacer referencia a ellos en el código fuente del campo personalizado. Los pares clave-valor pueden incluir variables de campos del formulario.
Los valores de los parámetros solo están disponibles después de que el formulario llame al método init().
Ejemplo: En el ejemplo siguiente, la configuración de parámetros del campo personalizado se rellena con los pares clave-valor symbol={{fields.symbol}} y separator=,

Código fuente

Agrega tu código JavaScript al campo personalizado.
Ejemplo:

Esquema JSON

De forma predeterminada, el campo personalizado acepta cualquier formato de valor. Sin embargo, puedes usar JSON Schema para validar los valores en el servidor.
Ejemplo:
Para adaptarte a requisitos de validación complejos, puedes usar un flujo.

CSS

Añade tus estilos CSS al campo personalizado.

Manejadores de campos personalizados

Puedes usar estos manejadores para añadir un comportamiento personalizado al campo:

init()

Se invoca una sola vez cuando se crea el campo y recibe los valores de params que configuras en la sección parámetro. Devuelve un elemento HTML, una cadena o ningún valor. Ejemplo:

update()

Se invoca cuando el usuario vuelve a visitar el mismo paso del formulario. Esta opción es útil cuando necesita volver a renderizar la lógica de la interfaz de usuario o actualizar los valores de los parámetros que podrían haber cambiado.

onFocus()

Se invoca cuando el foco pasa al elemento HTML del campo personalizado.

onBlur()

Se invoca cuando el elemento HTML del campo personalizado pierde el foco.

getValue()

Se invoca cuando el formulario necesita obtener el valor del campo personalizado una o varias veces. Por lo general, esto ocurre cuando el usuario envía ese paso del formulario. Si necesita realizar validaciones del lado del cliente, puede generar un error para mostrar un mensaje de error personalizado al usuario. Ejemplo:

block()

Se invoca cuando el campo personalizado debe bloquearse. Normalmente se ejecuta cuando el usuario envía ese paso del formulario y los datos se están procesando en nuestro backend.

unblock()

Se invoca cuando se debe desbloquear el campo personalizado. Normalmente se ejecuta después de que el usuario envía ese paso del formulario o de que los datos dejan de procesarse en nuestro back-end debido a un error de validación.

getScripts()

Devuelve una lista de URL cuya carga el formulario garantiza que habrá finalizado antes de que se invoque el método init(). Ejemplo:

Objeto de contexto

Al pasar un objeto de contexto, puedes usar estos métodos para gestionar la lógica de tu formulario y tus componentes.

Métodos personalizados

context.custom.getValue()

Devuelve el valor del campo personalizado actual.

context.custom.setValue()

Establece un valor para el campo personalizado actual. Ejemplo:

context.custom.createUid()

Devuelve un identificador único del campo personalizado actual. Ejemplo:

context.custom.getParams()

Obtiene los parámetros de la configuración actual del campo personalizado.
Los valores de los parámetros solo están disponibles después de que el formulario invoque el método init().
Ejemplo:

Métodos del formulario

Cuando necesites interactuar con el formulario para obtener valores de otros campos o ir a otros pasos del formulario, puedes usar los siguientes métodos del formulario:

context.form.getId()

Devuelve un identificador único del formulario actual.

context.form.getRoot()

Devuelve el elemento HTML raíz del formulario actual.

context.form.goForward()

Pasa al siguiente paso del formulario.

context.form.goPrevious()

Pasa al paso anterior del formulario.

context.form.isValid()

Devuelve un valor booleano si el formulario supera todas las validaciones del cliente.

context.form.validate()

Valida los valores actuales de los campos en el cliente antes de continuar. Si un campo no supera la validación, aparecerá un mensaje de error.

context.form.getAllHiddenFields()

Devuelve un objeto con los valores de todos los campos ocultos.

context.form.setHiddenField(id, value)

Establece el valor de un campo oculto.

context.form.getValues()

Devuelve un objeto con los valores de todos los campos, incluidos los campos ocultos.

context.form.getField(id)

Devuelve una instancia del campo especificado.
  • getNode() | true Devuelve el elemento HTML raíz del campo.
  • getValue() Devuelve el valor del campo.
  • setRequired(boolean) Marca o desmarca el campo como obligatorio.
Ejemplo:
setRequired() solo marca o desmarca el campo como obligatorio en el cliente. Por ejemplo, si desmarca un campo como obligatorio, pero está marcado como obligatorio en la configuración del campo, el formulario devolverá un error si el campo no tiene ningún valor.

Ejemplos de campos personalizados

En las secciones siguientes se muestran ejemplos de campos personalizados que puedes agregar a tus formularios:

Campo personalizado de rango

Un campo personalizado que devuelve un valor dentro de un rango predeterminado.
Código fuente:

Campo personalizado de selector de color

Un campo personalizado que devuelve un valor hexadecimal de color.
Código fuente:

Campo personalizado de autocompletado con valores de una API

Un campo personalizado que devuelve un valor de autocompletado mediante una API de terceros.
Código fuente:

Campo personalizado con lista desplegable dinámica y valores de una API

Un campo personalizado que devuelve un valor de una lista desplegable dinámica mediante una API de terceros.
Código fuente:

Campo personalizado de entrada dinámica con un botón (+) para añadir más campos

Un campo personalizado que permite a los usuarios añadir más campos.
Código fuente:
Código CSS: