Skip to content

Tableaux & objets


Tags — UInputTags

Activation : schema type: "array" d’items string + options.format: "tags".

API

NameTypeDefaultDescription
format"tags"Requis.
delimiterString","Séparateur à la saisie (coller une liste).
placeholderStringPlaceholder.
inputTagsObjectPass-through → UInputTags.

Les contraintes uniqueItems, maxItems, items.maxLength viennent du schema.

Exemple

json
{
  "type": "array",
  "title": "E-mails",
  "uniqueItems": true,
  "maxItems": 10,
  "items": { "type": "string", "format": "email" }
}
json
{
  "type": "Control",
  "scope": "#/properties/emails",
  "options": {
    "format": "tags",
    "delimiter": ";",
    "placeholder": "nom@exemple.fr ;"
  }
}

Array — cartes répétables

Activation : schema type: "array" d’objets (hors tags / multi-enum / file).

API

NameTypeDefaultDescription
showSortButtonsBooleanAffiche les boutons monter / descendre.
elementLabelPropStringChemin (évent. profond) de la propriété servant de titre à chaque item.
detailUISchemaElementUISchema template rendu pour chaque élément.

Exemples

json
{
  "type": "Control",
  "scope": "#/properties/employees",
  "options": {
    "showSortButtons": true,
    "elementLabelProp": "name"
  }
}

Avec UISchema détaillé :

json
{
  "type": "Control",
  "scope": "#/properties/addresses",
  "options": {
    "showSortButtons": true,
    "elementLabelProp": "city",
    "detail": {
      "type": "HorizontalLayout",
      "elements": [
        { "type": "Control", "scope": "#/properties/street" },
        { "type": "Control", "scope": "#/properties/city" }
      ]
    }
  }
}

List with detail

Même jeu d’options que Array (showSortButtons, elementLabelProp, detail) lorsque le UISchema utilise le layout list-with-detail JSON Forms.


Object / allOf

API

NameTypeDefaultDescription
detailUISchemaElementUISchema enfant personnalisé à la place de la génération automatique.

Exemple

json
{
  "type": "Control",
  "scope": "#/properties/address",
  "options": {
    "detail": {
      "type": "VerticalLayout",
      "elements": [
        { "type": "Control", "scope": "#/properties/line1" },
        { "type": "Control", "scope": "#/properties/zip" }
      ]
    }
  }
}

oneOf / anyOf

Sélecteur de variante + sous-formulaire. Pas d’options métier dédiées au-delà des options communes et du pass-through select / selectMenu sur le sélecteur.

Exemple minimal

json
{
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "kind": { "const": "person", "title": "Personne" },
        "name": { "type": "string" }
      }
    },
    {
      "type": "object",
      "properties": {
        "kind": { "const": "company", "title": "Société" },
        "siret": { "type": "string" }
      }
    }
  ]
}

Playground

Publié sous licence BSD-3-Clause.