Definiciones del modelo, campos y tipos de componentes field-types

Obtenga información acerca de los campos y los tipos de componentes que el editor universal puede editar en el panel de propiedades con ejemplos. Descubra cómo puede instrumentar su propia aplicación creando una definición de modelo y vinculándola al componente.

Información general overview

Al adaptar sus propias aplicaciones para utilizarlas con el editor universal, debe instrumentar los componentes y definir qué campos y tipos de componentes pueden manipular en el panel de propiedades del editor. Para ello, cree un modelo y estableciendo el vínculo con él desde el componente.

Este documento proporciona información general sobre la definición de un modelo, los campos y los tipos de componentes disponibles, así como configuraciones de ejemplo.

TIP
Si no sabe cómo instrumentar su aplicación para el editor universal, consulte el documento Información general del editor universal para desarrolladores de AEM.

Estructura de definición de modelo model-structure

Para configurar un componente a través del panel de propiedades del editor universal, debe existir una definición de modelo y estar vinculada al componente.

La definición del modelo es una estructura JSON que comienza con una matriz de modelos.

[
  {
    "id": "model-id",        // must be unique
    "fields": []             // array of fields which shall be rendered in the properties panel
  }
]

Consulte la sección Campos de este documento para obtener más información sobre cómo definir la matriz fields.

Puede vincular un modelo a un componente de dos maneras: usando la definición de componente o a través de la instrumentación.

Vinculación con la definición del componente component-definition

Este es el método preferido para vincular el modelo al componente. Al hacerlo, puede mantener el vínculo de forma centralizada en la definición del componente, lo que permite arrastrar componentes entre distintos contenedores.

Solo hay que incluir la propiedad model en el objeto de componente en la matriz components del archivo component-definition.json.

Para obtener más información, consulte el documento Definición de componente.

Vinculación a través de la instrumentación instrumentation

Para usar la definición del modelo con un componente, se puede usar el atributo data-aue-model.

<div data-aue-resource="urn:datasource:/content/path" data-aue-type="component"  data-aue-model="model-id">Click me</div>
NOTE
El editor universal comprueba primero si un modelo está vinculado a través de la instrumentación y utiliza eso antes de comprobar la definición del componente. Esto significa lo siguiente:
  • Los proyectos que hayan implementado el vínculo al modelo a través de la instrumentación seguirán funcionando tal cual sin necesidad de cambios.
  • Si define el modelo en la definición de componente así como en la instrumentación, se utilizará siempre la instrumentación.

Carga de una definición de modelo loading-model

Una vez creado un modelo, se puede hacer referencia a él como un archivo externo.

<script type="application/vnd.adobe.aue.model+json" src="<url-of-model-definition>"></script>

De forma alternativa, también puede definir el modelo en línea.

<script type="application/vnd.adobe.aue.model+json">
  { ... model definition ... }
</script>

Campos fields

Un objeto de campo tiene la siguiente definición de tipo.

Configuración
Tipo de valor
Descripción
Necesario
component
ComponentType
Procesador del componente
name
string
Propiedad o ruta donde se mantendrán los datos
label
FieldLabel
Etiqueta del campo
description
FieldDescription
Descripción del campo
No
value
FieldValue
Es un valor predeterminado que sirve como marcador de posición. Este valor no determina ninguna actualización de contenido. Solo es una representación en la interfaz de usuario.
No
valueType
ValueType
La validación estándar puede ser string, string[], number, date o boolean
No
required
boolean
¿Es el campo obligatorio?
No
readOnly
boolean
¿Es el campo de solo lectura?
No
hidden
boolean
Está oculto el campo de forma predeterminada
No
condition
RulesLogic
Regla para mostrar u ocultar el campo según una condición
No
multi
boolean
¿Es el campo un campo múltiple?
Tenga en cuenta que no se permite anidar contenedores para campos múltiples en el panel de propiedades
No
validation
ValidationType
Regla o reglas de validación para el campo
No
raw
unknown
Datos sin procesar que el componente puede utilizar
No

campo Nombre y anidamiento nesting

El campo name puede señalar directamente a una propiedad del recurso actual o, en el caso de los componentes de cq:Pages, también puede utilizar una ruta de acceso a una propiedad anidada. Por ejemplo:

"name": "teaser/image/fileReference"

tipos de componentes component-types

A continuación se indican los tipos de componentes que se pueden utilizar para procesar campos.

Descripción
Tipo de componente
Etiqueta de AEM
aem-tag
Contenido de AEM
aem-content
Booleano
boolean
Grupo de casillas de verificación
checkbox-group
Contenedor
container
Fragmento de contenido
aem-content-fragment
Fecha y hora
date-time
Fragmento de experiencia
aem-experience-fragment
Selección múltiple
multiselect
Número
number
Grupo de opciones
radio-group
Referencia
reference
Texto enriquecido
richtext
Seleccionar
select
Pestaña
tab
Texto
text

Etiqueta de AEM aem-tag

El tipo de componente de etiquetas de AEM habilita un selector de etiquetas de AEM que se puede utilizar para adjuntar etiquetas al componente.

Muestra
code language-json
{
  "id": "aem-tag-picker",
  "fields": [
    {
      "component": "aem-tag",
      "label": "AEM Tag Picker",
      "name": "cq:tags",
      "valueType": "string"
    }
  ]
}
Captura de pantalla
Captura de pantalla del tipo de componente de etiqueta de AEM
TIP
Consulte el documento Administración de datos de taxonomía para obtener más información sobre cómo puede usar hojas de cálculo para gestionar los datos de taxonomía de su proyecto de Edge Delivery Services.

Contenido de AEM aem-content

Un tipo de componente de contenido de AEM habilita un selector de contenido de AEM, que se puede utilizar para seleccionar cualquier recurso de AEM. A diferencia del componente de referencia, que solo puede seleccionar recursos, el componente de contenido de AEM puede hacer referencia a cualquier contenido de AEM. Ofrece un tipo de validación adicional.

Tipo de validación
Tipo de valor
Descripción
Necesario
rootPath
string
Ruta que abrirá el selector de contenido para que el usuario seleccione contenido de AEM, lo que limita la selección a ese directorio y subdirectorios
No
Muestra
code language-json
{
  "id": "aem-content-picker",
  "fields": [
    {
      "component": "aem-content",
      "name": "reference",
      "value": "",
      "label": "AEM Content Picker",
      "valueType": "string",
      "validation": {
            "rootPath": "/content/refresh"
        }
    }
  ]
}
Captura de pantalla
Captura de pantalla del tipo de componente de contenido de AEM

Booleano boolean

Un tipo de componente booleano almacena un valor true/false simple procesado como conmutador. Ofrece un tipo de validación adicional.

Tipo de validación
Tipo de valor
Descripción
Necesario
customErrorMsg
string
Mensaje que se muestra si el valor introducido no es un valor booleano
No
Muestra 1
code language-json
{
  "id": "boolean",
  "fields": [
    {
      "component": "boolean",
      "label": "Boolean",
      "name": "boolean",
      "valueType": "boolean"
    }
  ]
}
Muestra 2
code language-json
{
  "id": "another-boolean",
  "fields": [
    {
      "component": "boolean",
      "label": "Boolean",
      "name": "boolean",
      "valueType": "boolean",
      "validation": {
        "customErrorMsg": "Think, McFly. Think!"
      }
    }
  ]
}
Captura de pantalla
Captura de pantalla de tipo de componente booleano

Grupo de casillas de verificación checkbox-group

Similar a un booleano, un tipo de componente de grupo de casillas de verificación permite la selección de varios elementos true/false, representados como varias casillas de verificación.

Muestra
code language-json
{
  "id": "checkbox-group",
  "fields": [
    {
      "component": "checkbox-group",
      "label": "Checkbox Group",
      "name": "checkbox",
      "valueType": "string[]",
      "options": [
        { "name": "Option 1", "value": "option1" },
        { "name": "Option 2", "value": "option2" }
      ]
    }
  ]
}
Captura de pantalla
Captura de pantalla del tipo de componente del grupo de casillas

Contenedor container

Un tipo de componente contenedor permite agrupar componentes, incluida la compatibilidad con varios campos. Ofrece una configuración adicional. Tenga en cuenta que no se permite anidar contenedores para campos múltiples en el panel de propiedades

Configuración
Tipo de valor
Descripción
Necesario
collapsible
boolean
¿Es contraíble el contenedor?
No
Muestra
code language-json
 {
  "id": "container",
  "fields": [
    {
      "component": "container",
      "label": "Container",
      "name": "container",
      "valueType": "string",
      "collapsible": true,
      "fields": [
        {
          "component": "text-input",
          "label": "Simple Text 1",
          "name": "text",
          "valueType": "string"
        },
        {
          "component": "text-input",
          "label": "Simple Text 2",
          "name": "text2",
          "valueType": "string"
        }
      ]
    }
  ]
}
Captura de pantalla
Captura de pantalla del tipo de componente de contenedor
Compatibilidad de varios campos
code language-json
{
  "component": "container",
  "name": "test",
  "label": "Multi Text",
  "multi": true,
  "fields": [
    {
      "component": "reference",
      "name": "image",
      "value": "",
      "label": "Sample Image",
      "valueType": "string"
    },
    {
      "component": "text",
      "name": "alt",
      "value": "",
      "label": "Alt Text",
      "valueType": "string"
    }
  ]
}

Fragmento de contenido content-fragment

El selector de fragmentos de contenido se puede usar para seleccionar un fragmento de contenido y sus variaciones (si es necesario). Ofrece una configuración adicional.

Configuración
Tipo de valor
Descripción
Necesario
variationName
string
Nombre de variable para acceder a la variación seleccionada. Si no se define, no se muestra ningún selector de variación
No

También ofrece un tipo de validación adicional.

Tipo de validación
Tipo de valor
Descripción
Necesario
rootPath
string
Ruta que abrirá el selector de contenido para que el usuario seleccione el fragmento de contenido, lo que limita la selección a ese directorio y subdirectorios
No
NOTE
El editor universal valida los campos de fragmento de contenido según sus modelos, lo que le permite aplicar reglas de integridad de datos como patrones regex y restricciones de exclusividad.
Esto garantiza que el contenido cumple los requisitos de la empresa antes de su publicación.
Muestra 1
code language-json
[
  {
    "id": "aem-content-fragment",
    "fields": [
      {
        "component": "aem-content-fragment",
        "name": "picker",
        "label": "Content Fragment Picker",
        "valueType": "string",
        "variationName": "contentFragmentVariation",
        "validation": {
            "rootPath": "/content/refresh"
        }
      }
    ]
  }
]
Captura de pantalla
Captura de pantalla del selector de fragmentos de contenido

Fecha y hora date-time

Un tipo de componente de fecha y hora permite especificar una fecha, una hora o una combinación de ambas. Ofrece configuraciones adicionales.

Configuración
Tipo de valor
Descripción
Necesario
displayFormat
string
Formato con el que se muestra la cadena de fecha
valueFormat
string
Formato en el que se almacena la cadena de fecha

También ofrece un tipo de validación adicional.

Tipo de validación
Tipo de valor
Descripción
Necesario
customErrorMsg
string
Mensaje que se mostrará si no se cumple valueFormat
No
Muestra 1
code language-json
{
  "id": "date-time",
  "fields": [
    {
      "component": "date-time",
      "label": "Date & Time",
      "name": "date",
      "valueType": "date"
    }
  ]
}
Muestra 2
code language-json
{
  "id": "another-date-time",
  "fields": [
    {
      "component": "date-time",
       "valueType": "date-time",
      "name": "field1",
      "label": "Date Time",
      "description": "This is a date time field that stores both date and time.",
      "required": true,
      "placeholder": "YYYY-MM-DD HH:mm:ss",
      "displayFormat": null,
      "valueFormat": null,
      "validation": {
        "customErrorMsg": "Marty! You have to come back with me!"
      }
    },
    {
      "component": "date-time",
      "valueType": "date",
      "name": "field2",
      "label": "Another Date Time",
      "description": "This is another date time field that only stores the date.",
      "required": true,
      "placeholder": "YYYY-MM-DD",
      "displayFormat": null,
      "valueFormat": null,
      "validation": {
        "customErrorMsg": "Back to the future!"
      }
    },
    {
      "component": "date-time",
      "valueType": "time",
      "name": "field3",
      "label": "Yet Another Date Time",
      "description": "This is another date time field that only stores the time.",
      "required": true,
      "placeholder": "HH:mm:ss",
      "displayFormat": null,
      "valueFormat": null,
      "validation": {
        "customErrorMsg": "Great Scott!"
      }
    }
  ]
}
Captura de pantalla
Captura de pantalla del tipo de componente de fecha y hora

Fragmento de experiencia experience-fragment

El selector Fragmento de experiencia se puede usar para seleccionar un fragmento de experiencia y sus variaciones (si es necesario). Ofrece una configuración adicional.

Configuración
Tipo de valor
Descripción
Necesario
variationName
string
Nombre de variable para acceder a la variación seleccionada. Si no se define, no se muestra ningún selector de variación
No

También ofrece un tipo de validación adicional.

Tipo de validación
Tipo de valor
Descripción
Necesario
rootPath
string
Ruta que abrirá el selector de contenido para que el usuario seleccione el fragmento de experiencia, lo que limita la selección a ese directorio y subdirectorios
No
Muestra 1
code language-json
[
  {
    "id": "experience-fragment",
    "fields": [
      {
        "component": "aem-experience-fragment",
        "valueType": "string",
        "name": "experience-fragment",
        "label": "experience-fragment",
        "variationName": "experienceFragmentVariation",
        "validation": {
            "rootPath": "/content/refresh"
        }
      }
    ]
  }
]
Captura de pantalla
Captura de pantalla del selector de fragmentos de experiencia

Selección múltiple multiselect

Un tipo de componente de selección múltiple presenta varios elementos para su selección en una lista desplegable, incluida la capacidad de agrupar los elementos seleccionables.

Muestra 1
code language-json
{
  "id": "multiselect",
  "fields": [
    {
      "component": "multiselect",
      "name": "multiselect",
      "label": "Multi Select",
      "valueType": "string",
      "options": [
        { "name": "Option 1", "value": "option1" },
        { "name": "Option 2", "value": "option2" }
      ]
    }
  ]
}
Muestra 2
code language-json
{
  "id": "multiselect-grouped",
  "fields": [
    {
      "component": "multiselect",
      "name": "property",
      "label": "Multiselect field",
      "valueType": "string",
      "required": true,
      "maxSize": 2,
      "options": [
        {
          "name": "Theme",
          "children": [
            { "name": "Light", "value": "light" },
            { "name": "Dark",  "value": "dark" }
          ]
        },
        {
          "name": "Type",
          "children": [
            { "name": "Alpha", "value": "alpha" },
            { "name": "Beta", "value": "beta" },
            { "name": "Gamma", "value": "gamma" }
          ]
        }
      ]
    }
  ]
}
Capturas de pantalla
Captura de pantalla del tipo de componente de selección múltiple
Captura de pantalla del tipo de componente de selección múltiple con agrupación

Número number

Un tipo de componente numérico permite introducir un número. Ofrece tipos de validación adicionales.

Tipo de validación
Tipo de valor
Descripción
Necesario
numberMin
number
Número mínimo permitido
No
numberMax
number
Número máximo permitido
No
customErrorMsg
string
Mensaje que se mostrará si numberMin o numberMax no se cumplen
No
Muestra 1
code language-json
{
  "id": "number",
  "fields": [
    {
      "component": "number",
      "name": "number",
      "label": "Number",
      "valueType": "number",
      "value": 0
    }
  ]
}
Muestra 2
code language-json
{
  "id": "another-number",
  "fields": [
   {
      "component": "number",
      "valueType": "number",
      "name": "field1",
      "label": "Number Field",
      "description": "This is a number field.",
      "required": true,
      "placeholder": null,
      "validation": {
        "numberMin": 0,
        "numberMax": 88,
        "customErrorMsg": "You also need 1.21 gigawatts."
      }
    }
  ]
}
Captura de pantalla
Captura de pantalla del tipo de componente numérico

Grupo de opciones radio-group

Un tipo de componente de grupo de radio permite una selección mutuamente excluyente de varias opciones representadas como un grupo similar a un grupo de casillas de verificación.

Muestra
code language-json
{
  "id": "radio-group",
  "fields": [
    {
      "component": "radio-group",
      "label": "Radio Group",
      "name": "radio",
      "valueType": "string",
      "options": [
        { "name": "Option 1", "value": "option1" },
        { "name": "Option 2", "value": "option2" }
      ]
    }
  ]
}
Captura de pantalla
Captura de pantalla del tipo de componente del grupo de radio

Referencia reference

Un tipo de componente de referencia habilita un selector de recursos AEM, que se puede utilizar para seleccionar cualquier recurso de AEM al que hacer referencia. A diferencia del componente de contenido de AEM, que puede seleccionar cualquier recurso de AEM, el componente de referencia solo puede hacer referencia a recursos. Ofrece un tipo de validación adicional.

Un tipo de componente de referencia permite hacer referencia a otro objeto de datos del objeto actual.

Muestra
code language-json
{
  "id": "reference",
  "fields": [
    {
      "component": "reference",
      "label": "Reference",
      "name": "reference",
      "valueType": "string"
    }
  ]
}
Captura de pantalla
Captura de pantalla del tipo de componente de referencia

Texto enriquecido rich-text

El texto enriquecido permite la entrada de texto enriquecido multilínea.

Muestra 1
code language-json
{
  "id": "richtext",
  "fields": [
    {
      "component": "richtext",
      "name": "rte",
      "label": "Rich Text",
      "valueType": "string"
    }
  ]
}
Captura de pantalla
Captura de pantalla del tipo de componente de área de texto

Seleccionar select

Un tipo de componente de selección permite seleccionar una sola opción de una lista de opciones predefinidas en un menú desplegable.

Muestra
code language-json
{
  "id": "select",
  "fields": [
    {
      "component": "select",
      "label": "Select",
      "name": "select",
      "valueType": "string",
      "options": [
        { "name": "Option 1", "value": "option1" },
        { "name": "Option 2", "value": "option2" }
      ]
    }
  ]
}
Captura de pantalla
Captura de pantalla de un componente seleccionado

Pestaña tab

Un tipo de componente de pestaña le permite agrupar otros campos de entrada en varias pestañas para mejorar la organización del diseño para los autores.

Una definición de tab se puede considerar como un separador en la matriz de fields. Todo lo que venga después de tab se colocará en esa pestaña hasta que se encuentre un nuevo tab, tras lo cual los siguientes elementos se situarán en la nueva pestaña.

Si desea que los elementos aparezcan encima de todas las pestañas, deben definirse antes que las pestañas.

Muestra
code language-json
{
  "id": "tab",
  "fields": [
    {
      "component": "tab",
      "label": "Tab 1",
      "name": "tab1"
    },
    {
      "component": "text-input",
      "label": "Text 1",
      "name": "text1",
      "valueType": "string"
    },
    {
      "component": "tab",
      "label": "Tab 2",
      "name": "tab2"
    },
    {
      "component": "text-input",
      "label": "Text 2",
      "name": "text2",
      "valueType": "string"
    }
  ]
}
Captura de pantalla
Captura de pantalla del tipo de componente de pestaña

Texto text

El texto permite introducir una sola línea de texto. Incluye tipos de validación adicionales.

Tipo de validación
Tipo de valor
Descripción
Necesario
minLength
number
Número mínimo de caracteres permitidos
No
maxLength
number
Número máximo de caracteres permitidos
No
regExp
string
Expresión regular con la que debe coincidir el texto de entrada
No
customErrorMsg
string
Mensaje que se mostrará si se infringen minLength, maxLength o regExp
No
Muestra 1
code language-json
{
  "id": "simpletext",
  "fields": [
    {
      "component": "text",
      "name": "text",
      "label": "Simple Text",
      "valueType": "string"
    }
  ]
}
Muestra 2
code language-json
{
  "id": "another simpletext",
  "fields": [
    {
      "component": "text",
      "name": "text",
      "label": "Simple Text",
      "valueType": "string",
      "valueFormat": "regexp",
      "description": "This is a text input with validation.",
      "required": true,
      "validation": {
        "minLength": 1955,
        "maxLength": 1985,
        "regExp": "^foo:.*",
        "customErrorMsg": "Why don't you make like a tree and get outta here?"
      }
    }
  ]
}
Captura de pantalla
Captura de pantalla del tipo de componente de texto
recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab