robin
791ef2639c
All checks were successful
continuous-integration/drone/push Build is passing
🔀 Merge branch 'feature/schema-update' into 'master'
The collectionNavigation.json schema was updated to include a new enum value "MANUALLY" for the "order" property in the "defaultSort" object. This allows for manual sorting of items in the admin UI lists. The fieldMeta.json schema was updated to include new properties and definitions related to folding configuration for array fields, hiding field widgets, direction of fields, path steps, and meta elements. These updates enhance the flexibility and customization options for the field widgets in the application.
747 lines
33 KiB
JSON
747 lines
33 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"title": "JSON Schema tibi-server field meta configuration",
|
|
"description": "tibi-server field meta linter",
|
|
"type": "object",
|
|
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/minimum"
|
|
},
|
|
{
|
|
"$ref": "#/definitions/minimum",
|
|
"patternProperties": {
|
|
"^x-.*|widget|inputProps$": { "$comment": "stub for allOf" }
|
|
},
|
|
"allOf": [
|
|
{
|
|
"properties": {
|
|
"widget": { "enum": ["text", "checkbox"] }
|
|
}
|
|
},
|
|
{
|
|
"properties": {
|
|
"inputProps": {
|
|
"type": "object",
|
|
"properties": {
|
|
"multiline": { "type": "boolean" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"$ref": "#/definitions/minimum",
|
|
"patternProperties": {
|
|
"^x-.*|widget|inputProps$": { "$comment": "stub for allOf" }
|
|
},
|
|
"allOf": [
|
|
{
|
|
"properties": {
|
|
"widget": { "enum": ["object", "object[]", "grid"] }
|
|
}
|
|
},
|
|
{
|
|
"properties": {
|
|
"folding": {
|
|
"type": "object",
|
|
"description": "folding configuration for array fields",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"previewUnfolded": {
|
|
"description": "preview for unfolded array element",
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"$ref": "definitions.json#/definitions/evalObjectWithRaw"
|
|
}
|
|
]
|
|
},
|
|
"previewFolded": {
|
|
"description": "preview for folded array element",
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"$ref": "definitions.json#/definitions/evalObjectWithRaw"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"hide": {
|
|
"type": "boolean",
|
|
"description": "hide field widget"
|
|
},
|
|
"direction": {
|
|
"type": "string",
|
|
"enum": ["horizontal", "vertical"]
|
|
},
|
|
|
|
"pathStep": {
|
|
"type": "object",
|
|
"properties": {
|
|
"title": {
|
|
"type": "string",
|
|
"const": "Zeile"
|
|
},
|
|
"icon": {
|
|
"type": "string",
|
|
"const": "viewSequentialOutline"
|
|
}
|
|
},
|
|
"required": ["title", "icon"]
|
|
},
|
|
"metaElements": {
|
|
"oneOf": [
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"source": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["source"]
|
|
},
|
|
{
|
|
"type": "array",
|
|
"items": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"source": {
|
|
"type": "string",
|
|
"const": "layout"
|
|
}
|
|
},
|
|
"required": ["source"]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"tablist": {
|
|
"type": "object",
|
|
"properties": {
|
|
"tabs": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"label": {
|
|
"type": "string"
|
|
},
|
|
"subFields": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"source": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"source"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"label",
|
|
"subFields"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"required": ["tabs"]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"$ref": "#/definitions/minimum",
|
|
"patternProperties": {
|
|
"^x-.*|widget$": { "$comment": "stub for allOf" }
|
|
},
|
|
"allOf": [
|
|
{
|
|
"properties": {
|
|
"widget": { "enum": ["richtext", "richText"] }
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"$ref": "#/definitions/minimum",
|
|
"patternProperties": {
|
|
"^x-.*|widget|choices$": { "$comment": "stub for allOf" }
|
|
},
|
|
"allOf": [
|
|
{
|
|
"required": ["choices"],
|
|
"properties": {
|
|
"widget": {
|
|
"enum": [
|
|
"checkboxArray",
|
|
"select",
|
|
"selectArray",
|
|
"chipArray"
|
|
]
|
|
},
|
|
"choices": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"description": "endpoint configuration",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"endpoint": {
|
|
"type": "string",
|
|
"description": "endpoint URL or path"
|
|
},
|
|
"params": {
|
|
"type": "object",
|
|
"description": "query parameters"
|
|
},
|
|
"mapping": {
|
|
"type": "object",
|
|
"description": "data mapping",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"description": "name of id field"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "name of name/description field"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "array",
|
|
"description": "choices to select from",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"oneOf": [
|
|
{
|
|
"type": "null"
|
|
},
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "number"
|
|
}
|
|
]
|
|
},
|
|
"name": {
|
|
"description": "name is human readable value",
|
|
"$ref": "definitions.json#/definitions/i18nString"
|
|
},
|
|
"chipStyle": {
|
|
"$ref": "https://raw.githubusercontent.com/rcorp/css-schema/master/schema.json"
|
|
}
|
|
},
|
|
"required": ["id", "name"]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"$ref": "#/definitions/minimum",
|
|
"patternProperties": {
|
|
"^x-.*|widget$": { "$comment": "stub for allOf" }
|
|
},
|
|
"allOf": [
|
|
{
|
|
"properties": {
|
|
"widget": {
|
|
"enum": ["date", "datetime"]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"$ref": "#/definitions/minimum",
|
|
"patternProperties": {
|
|
"^x-.*|widget$": { "$comment": "stub for allOf" }
|
|
},
|
|
"allOf": [
|
|
{
|
|
"properties": {
|
|
"widget": {
|
|
"enum": ["file", "image"]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"$ref": "#/definitions/minimum",
|
|
"patternProperties": {
|
|
"^x-.*|widget$": { "$comment": "stub for allOf" }
|
|
},
|
|
"allOf": [
|
|
{
|
|
"properties": {
|
|
"widget": {
|
|
"enum": ["json"]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"$ref": "#/definitions/minimum",
|
|
"patternProperties": {
|
|
"^x-.*|widget$": { "$comment": "stub for allOf" }
|
|
},
|
|
"allOf": [
|
|
{
|
|
"properties": {
|
|
"widget": {
|
|
"enum": ["tabs"]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"$ref": "#/definitions/minimum",
|
|
"patternProperties": {
|
|
"^x-.*|widget|foreign$": { "$comment": "stub for allOf" }
|
|
},
|
|
"allOf": [
|
|
{
|
|
"properties": {
|
|
"widget": {
|
|
"enum": ["foreignKey"]
|
|
},
|
|
"foreign": {
|
|
"additionalProperties": false,
|
|
"description": "foreign key configuration",
|
|
"type": "object",
|
|
"properties": {
|
|
"collection": {
|
|
"type": "string",
|
|
"description": "collection name"
|
|
},
|
|
"id": {
|
|
"type": "string",
|
|
"description": "id field name"
|
|
},
|
|
"projection": {
|
|
"type": "string",
|
|
"description": "projection name used for fetching initial foreign entries from database"
|
|
},
|
|
"sort": {
|
|
"type": "string",
|
|
"description": "sort field name (-field for descending)"
|
|
},
|
|
"subNavigation": {
|
|
"type": "number",
|
|
"description": "sub navigation index in foreign collection"
|
|
},
|
|
"render": {
|
|
"description": "field name or eval object which returns string",
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"$ref": "definitions.json#/definitions/evalObjectWithRaw"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"defaultCollectionViews": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"defaultCollectionViews"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"$ref": "#/definitions/minimum",
|
|
"patternProperties": {
|
|
"^x-.*|widget|baseHref|cssHref|imageSelect|fileSelect|videoSelect|customTags|style$": {
|
|
"$comment": "stub for allOf"
|
|
}
|
|
},
|
|
"allOf": [
|
|
{
|
|
"properties": {
|
|
"widget": {
|
|
"enum": ["contentbuilder"]
|
|
},
|
|
"baseHref": {
|
|
"description": "base href for relative links inside of ContentBuilder",
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"$ref": "definitions.json#/definitions/evalObject"
|
|
}
|
|
]
|
|
},
|
|
"cssHref": {
|
|
"description": "href to css file for use with ContentBuilder",
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
},
|
|
{
|
|
"$ref": "definitions.json#/definitions/evalObject"
|
|
}
|
|
]
|
|
},
|
|
"imageSelect": {
|
|
"description": "target for image selection",
|
|
"$ref": "#definitions/assetsTarget"
|
|
},
|
|
"fileSelect": {
|
|
"description": "target for file selection",
|
|
"$ref": "#definitions/assetsTarget"
|
|
},
|
|
"videoSelect": {
|
|
"description": "target for video selection",
|
|
"$ref": "#definitions/assetsTarget"
|
|
},
|
|
"customTags": {
|
|
"description": "custom tags to add to ContentBuilder",
|
|
"oneOf": [
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["placeholder", "label"],
|
|
"properties": {
|
|
"placeholder": {
|
|
"type": "string",
|
|
"description": "placeholder inside html code"
|
|
},
|
|
"label": {
|
|
"$ref": "definitions.json#/definitions/i18nString"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$ref": "definitions.json#/definitions/evalObject"
|
|
}
|
|
]
|
|
},
|
|
"style": {
|
|
"description": "css style to inject into ContentBuilder",
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"$ref": "definitions.json#/definitions/evalObject"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"definitions": {
|
|
"minimum": {
|
|
"additionalProperties": false,
|
|
"patternProperties": {
|
|
"^x\\-": {
|
|
"description": "template property"
|
|
}
|
|
},
|
|
"properties": {
|
|
"openapi": {
|
|
"type": "object"
|
|
},
|
|
"label": {
|
|
"$ref": "definitions.json#/definitions/i18nString",
|
|
"description": "label for field"
|
|
},
|
|
|
|
"addElementLabel": {
|
|
"$ref": "definitions.json#/definitions/i18nString",
|
|
"description": "label for adding element to list"
|
|
},
|
|
"helperText": {
|
|
"$ref": "definitions.json#/definitions/i18nString",
|
|
"description": "helper text for field"
|
|
},
|
|
"filter": {
|
|
"type": "object",
|
|
"description": "filter configuration for list view of this field",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"description": "filter type",
|
|
"enum": [
|
|
"default",
|
|
"select",
|
|
"bool",
|
|
"boolean",
|
|
"input",
|
|
"number",
|
|
"foreignKey"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
|
|
"css": {
|
|
"description": "css styles for field widgets",
|
|
"oneOf": [
|
|
{ "$comment": "for include tag", "type": "string" },
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"input": {
|
|
"description": "css styles for input widget",
|
|
"oneOf": [
|
|
{
|
|
"$comment": "for include tag",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"wrapper": {
|
|
"description": "css styles for input widget wrapper",
|
|
"$ref": "#/definitions/css"
|
|
},
|
|
"element": {
|
|
"description": "css styles for input widget sub elements",
|
|
"$ref": "#/definitions/css"
|
|
},
|
|
"foreignEntry": {
|
|
"description": "css styles for input widget linked foreign entries",
|
|
"$ref": "#/definitions/css"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"view": {
|
|
"description": "css styles for input widget",
|
|
"oneOf": [
|
|
{
|
|
"$comment": "for include tag",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"wrapper": {
|
|
"description": "css styles for view widget wrapper",
|
|
"$ref": "#/definitions/css"
|
|
},
|
|
"element": {
|
|
"description": "css styles for view widget sub elements",
|
|
"$ref": "#/definitions/css"
|
|
},
|
|
"foreignEntry": {
|
|
"description": "css styles for input widget linked foreign entries",
|
|
"$ref": "#/definitions/css"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"dependsOn": {
|
|
"description": "depends on rule",
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"eval": {
|
|
"type": "string",
|
|
"description": "javascript code which hides field widget if evaluates to false with $, $this, $parent and $stack variables"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"containerProps": {
|
|
"type": "object",
|
|
"properties": {
|
|
"class": {
|
|
"type": "string"
|
|
},
|
|
"layout": {
|
|
"type": "object",
|
|
"properties": {
|
|
"breakBefore": {
|
|
"type": "boolean"
|
|
},
|
|
"breakAfter": {
|
|
"type": "boolean"
|
|
},
|
|
"size": {
|
|
"type": "object",
|
|
"properties": {
|
|
"default": {
|
|
"type": "string"
|
|
},
|
|
"small": {
|
|
"type": "string"
|
|
},
|
|
"large": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"inputProps": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
},
|
|
|
|
"defaultValue": {
|
|
"description": "default value or code to get the value",
|
|
"oneOf": [
|
|
{ "type": "array" },
|
|
{ "type": "string" },
|
|
{ "type": "null" },
|
|
{ "type": "boolean" },
|
|
{ "type": "number" },
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"eval": {
|
|
"type": "string",
|
|
"description": "js code with $navigation variable"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"valueMap": {
|
|
"type": "object",
|
|
"description": "map values to icons",
|
|
"patternProperties": {
|
|
".*": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"muiIcon": {
|
|
"type": "string"
|
|
},
|
|
"style": {
|
|
"$comment": "https://raw.githubusercontent.com/rcorp/css-schema/master/schema.json"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"assetsTarget": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string",
|
|
"description": "url for assets view"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"collection": {
|
|
"type": "string",
|
|
"description": "collection name"
|
|
},
|
|
"subNavigation": {
|
|
"type": "number",
|
|
"description": "sub navigation index in collections meta.subNavigation"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$ref": "definitions.json#/definitions/evalObject"
|
|
}
|
|
]
|
|
},
|
|
"css": {
|
|
"anyOf": [
|
|
{ "type": "string" },
|
|
{
|
|
"$ref": "https://raw.githubusercontent.com/rcorp/css-schema/master/schema.json"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"eval": {
|
|
"type": "string",
|
|
"description": "javascript code evaled to string or css object"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|