{ "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "multilingual": { "type": "object", "required": ["en"], "patternProperties": { "en|de|ru|pt|nl|fr|it|es|pl|uk|zh-cn": { "type": "string" } }, "additionalProperties": false }, "i18n": { "description": "If translations will be provided via files, e.g. in admin/i18n/de/translations.json or provide the path to the i18n folder if it's custom or provide the translations inside this attribute as an object", "oneOf": [ { "type": "string" }, { "type": "boolean" }, { "type": "object", "patternProperties": { "^.+": { "$ref": "#/definitions/multilingual" } } } ] }, "componentType": { "description": "Type of the element", "type": "string", "enum": [ "accordion", "alive", "autocomplete", "autocompleteSendTo", "certificate", "certificates", "checkDocker", "checkLicense", "checkbox", "chips", "color", "coordinates", "cron", "custom", "datePicker", "deviceManager", "divider", "file", "fileSelector", "func", "header", "icon", "image", "imageSendTo", "infoBox", "instance", "interface", "ip", "jsonEditor", "language", "number", "oauth2", "objectId", "panel", "password", "pattern", "port", "qrCode", "room", "select", "selectSendTo", "sendTo", "setState", "slider", "state", "staticImage", "staticInfo", "staticLink", "staticText", "table", "text", "textSendTo", "timePicker", "user", "uuid" ] }, "numberProps": { "properties": { "placeholder": { "description": "Placeholder (for text control)", "type": "string" }, "min": { "description": "Minimal value", "type": "number" }, "max": { "description": "Maximum value", "type": "number" }, "step": { "description": "Step size for increase and decrease buttons", "type": "number" }, "unit": { "description": "Unit (could be multi-language)", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true, "doNotSave": true }, "additionalProperties": false, "required": ["type"] }, "staticLinkProps": { "properties": { "href": { "description": "Link", "type": "string" }, "text": { "description": "Static link or button", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "color": { "description": "Color of the link", "type": "string" }, "icon": { "description": "icon for button", "type": "string" }, "variant": { "description": "If button is outlined, contained or text", "type": "string", "enum": ["contained", "outlined", "text"] }, "controlStyle": { "description": "Style of the button or control itself", "type": "object" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "noTranslation": true, "confirm": true, "button": true }, "required": ["type", "href"] }, "textProps": { "properties": { "text": { "description": "Text input", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "trim": { "description": "If text must be trimmed or not (default = true)", "type": "boolean" }, "readOnly": { "type": "boolean", "description": "Shows text as read only field" }, "copyToClipboard": { "type": "boolean", "description": "Shows copy to clipboard button, but only if disabled or read-only" }, "noClearButton": { "type": "boolean", "description": "Do not show a clear button" }, "placeholder": { "description": "Placeholder (for text control)", "type": "string" }, "minRows": { "description": "default is 1. Set this attribute to `2` or more if you want to have a textarea with more than one row", "type": "number" }, "maxRows": { "description": "max rows of textarea. Used only if `minRows` > 1", "type": "number" }, "time": { "description": "If true, the text will be shown as time. The value is readonly automatically", "type": "boolean" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true, "maxLength": true, "doNotSave": true }, "additionalProperties": false, "required": ["type"] }, "tableItemBaseProps": { "properties": { "attr": { "description": "The linked attribute name", "type": "string" }, "width": { "type": ["number", "string"] }, "title": { "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "filter": { "type": "boolean" }, "sort": { "type": "boolean" } }, "additionalProperties": true }, "customProps": { "properties": { "name": { "description": "Component name that will be provided via props, like ComponentInstancesEditor", "type": "string" }, "url": { "description": "Location of the component", "type": "string" }, "i18n": { "$ref": "#/definitions/i18n" }, "bundlerType": { "type": "string", "description": "If module written with TypeScript, set it to `module`. From Admin 7.5.x", "enum": ["module"] }, "custom": { "type": "object", "description": "Custom properties for the component as an object" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] }, "certificatesProps": { "description": "Universal type that manages `certPublic`, `certPrivate`, `certChained` and `leCollection` attributes", "properties": { "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] }, "passwordProps": { "properties": { "encrypted": { "description": "Is value encrypted or not (of course only for texts)", "type": "boolean" }, "repeat": { "description": "Password must be compared with password", "type": "boolean" }, "visible": { "description": "True if allow to view the password by toggling the view button", "type": "boolean" }, "readOnly": { "description": "The read-only flag. Visible is automatically true if readOnly is true", "type": "boolean" }, "doNotSave": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true, "maxLength": true }, "additionalProperties": false, "required": ["type"] }, "checkboxProps": { "properties": { "doNotSave": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] }, "aliveProps": { "properties": { "instance": { "description": "Check if the instance is alive. If not defined, it will be used current instance. You can use `${data.number}` pattern in the text.", "type": "string" }, "textAlive": { "description": "Default text is `Instance %s is alive`, where `%s` will be replaced by `ADAPTER.0`", "type": "string" }, "textNotAlive": { "description": "Default text is `Instance %s is not alive`, where `%s` will be replaced by `ADAPTER.0`", "type": "string" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] }, "qrCodeProps": { "required": ["type", "data"], "additionalProperties": false, "properties": { "data": { "description": "The data to be encoded in the QR Code", "type": "string" }, "size": { "description": "The size of the QR code", "type": "number" }, "fgColor": { "description": "Foreground color", "type": "string" }, "bgColor": { "description": "Background color", "type": "string" }, "level": { "description": "QR code level", "enum": ["L", "M", "Q", "H"] }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true } }, "deviceManagerProps": { "properties": { "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] }, "cronProps": { "properties": { "complex": { "description": "Show CRON with \"minutes\", \"seconds\" and so on", "type": "boolean" }, "simple": { "description": "Show simple CRON settings", "type": "boolean" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"], "oneOf": [ { "required": ["complex"] }, { "required": ["simple"] } ] }, "sendToProps": { "properties": { "command": { "description": "Command to be sent.", "type": "string" }, "color": { "description": "Optional color", "type": "string", "enum": ["primary", "secondary"] }, "icon": { "description": "sendTo can have icon (base64)", "type": "string" }, "jsonData": { "description": "Data to be sent as parsable string, can contain special placeholder. E. g. '{\"subject1\": \"${data.subject}\", \"options1\": {\"host\": \"${data.host}\"}}'", "type": "string" }, "data": { "description": "Data to be sent as JSON.", "type": "object" }, "result": { "description": "{result1: {en: 'A'}, result2: {en: 'B'}}", "type": "object" }, "error": { "description": "{error1: {en: 'E'}, error2: {en: 'E2'}}", "type": "object" }, "variant": { "description": "If outlined or contained", "type": "string", "enum": ["contained", "outlined"] }, "placeholder": { "description": "Placeholder (for text control)", "type": "string" }, "useNative": { "description": "if adapter returns result with `native` attribute it will be used for configuration. If `saveConfig` is true, the user will be requested to save the configuration", "type": "boolean" }, "showProcess": { "description": "Show spinner while request is in progress", "type": "boolean" }, "openUrl": { "description": "if true - open URL in new tab, if response contains attribute openUrl, like {\"openUrl\": \"http://1.2.3.4:80/aaa\", \"window\": \"_blank\", \"saveConfig\": true}. If saveConfig is true, the user will be requested to save the configuration.", "type": "boolean" }, "onLoaded": { "description": "if true - execute the button logic once initially", "type": "boolean" }, "window": { "description": "if `openUrl` is true, this is a name of the new window. Could be overwritten if response consist `window` attribute. It is not the title of the new window!", "type": "string", "default": ["_blank", "_self"] }, "controlStyle": { "description": "Style of the button or control itself", "type": "object" }, "timeout": { "description": "timeout for request in ms. Default: none.", "type": "number" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type", "command"] }, "stateProps": { "properties": { "oid": { "description": "Which object ID should be taken for the controlling. The ID is without \"adapter.X.\" prefix", "type": "string" }, "system": { "description": "IF true, the state will be taken from system.adapter.XX.I. and not from XX.I", "type": "boolean" }, "control": { "description": "How the value of the state should be shown", "type": "string", "enum": ["text", "html", "input", "number", "slider", "switch", "select", "button"] }, "controlled": { "description": "If false, the control will be read only", "type": "boolean" }, "unit": { "description": "Unit (could be multi-language)", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "trueText": { "description": "This text will be shown if the value is true", "type": "string" }, "trueTextStyle": { "description": "Style of the text if the value is true", "type": "object" }, "falseText": { "description": "This text will be shown if the value is false", "type": "string" }, "falseTextStyle": { "description": "Style of the text if the value is false", "type": "object" }, "trueImage": { "description": "This image will be shown if the value is true. It could be base64 or URL", "type": "string" }, "falseImage": { "description": "This image will be shown if the value is false. It could be base64 or URL", "type": "string" }, "min": { "description": "Minimum value for number or slider", "type": "number" }, "max": { "description": "Maximum value for number or slider", "type": "number" }, "step": { "description": "Step for number or slider", "type": "number" }, "controlDelay": { "description": "Delay in ms between the change and the command", "type": "number" }, "variant": { "description": "Show spinner while request is in progress", "type": "string", "enum": ["contained", "outlined", "text"] }, "readOnly": { "description": "Defines if the control is read-only. Applied only to 'input', 'slider', 'select', 'button', 'switch', 'number'", "type": "boolean" }, "foreign": { "description": "The 'oid' is absolute and no need to add 'adapter.X' or 'system.adapter.X.' to oid", "type": "boolean" }, "narrow": { "description": "With this flag, the value will appear just after the label", "type": "boolean" }, "blinkOnUpdate": { "description": "Value should blink when updated (true or color). Only texts", "type": "boolean" }, "size": { "description": "Font size: small, normal, large or number", "size": { "description": "Font size", "oneOf": [ { "default": "normal", "type": "string", "enum": ["small", "normal", "large"] }, { "type": "number" } ] } }, "addColon": { "description": "Add to label the colon at the end if not exist in label", "type": "boolean" }, "labelIcon": { "description": "Base64 icon for label", "type": "string" }, "buttonValue": { "description": "Optional value, that will be sent for button", "oneOf": [ { "type": "string" }, { "type": "number" }, { "type": "boolean" } ] }, "showEnterButton": { "description": "Show SET button. The value in this case will be sent only when the button is pressed. You can define the text of the button. Default text is \"Set\" (Only for \"input\", \"number\" or \"slider\")", "oneOf": [ { "type": "string" }, { "type": "boolean" }, { "$ref": "#/definitions/multilingual" } ] }, "setOnEnterKey": { "description": "The value in this case will be sent only when the \"Enter\" button is pressed. It can be combined with `showEnterButton`", "type": "boolean" }, "options": { "description": "Options for `select` in form `[\"value1\", \"value2\", ...]` or `[{\"value\": \"value\", \"label\": \"Value1\"}, \"value2\", ...]`. If not defiled, the `common.states` in the object must exist.", "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "additionalProperties": false, "properties": { "label": { "oneOf": [ { "description": "Value label", "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "value": { "oneOf": [ { "type": "number" }, { "type": "string" } ] }, "hidden": { "type": "boolean" }, "color": { "type": "string", "description": "Color of the option" } }, "required": ["label", "value"] } ] } }, "label": true, "type": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "tooltip": true, "expertMode": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type", "oid"] }, "instanceProps": { "properties": { "adapter": { "description": "Name of the adapter. With special name _dataSources you can get all adapters with flag common.getHistory", "type": "string" }, "adapters": { "description": "Optional list of adapters as array of strings, that should be shown. If not defined, all adapters will be shown. Only active if adapter attribute is not defined.", "type": "array", "items": { "type": "string" } }, "allowDeactivate": { "description": "If true. Additional option \"deactivate\" is shown", "type": "boolean" }, "onlyEnabled": { "description": "If true. Only enabled instances will be shown", "type": "boolean" }, "long": { "description": "Value will look like system.adapter.ADAPTER.0 and not ADAPTER.0", "type": "boolean" }, "short": { "description": "Value will look like 0 and not ADAPTER.0", "type": "boolean" }, "all": { "description": "Add to the options ALL option with value *", "type": "boolean" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type", "adapter"] }, "objectIdProps": { "properties": { "types": { "description": "Filter for one of the possible types: 'channel', 'device', ... (is state by default)", "oneOf": [ { "default": "state", "type": "string", "enum": [ "state", "channel", "device", "enum", "host", "adapter", "instance", "meta", "config", "script", "user", "group", "chart", "folder" ] }, { "type": "array", "maxItems": 1, "items": { "type": "string", "enum": [ "state", "channel", "device", "enum", "host", "adapter", "instance", "meta", "config", "script", "user", "group", "chart", "folder" ] } } ] }, "root": { "description": "Show only this root object and its children", "type": "boolean" }, "customFilter": { "description": "Cannot be used together with `types` settings. Example: `{type: ['channel', 'device']}` - show only channels and devices", "type": "string" }, "placeholder": { "description": "Placeholder (for text control)", "type": "string" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] }, "oauth2Props": { "properties": { "saveTokenIn": { "description": "State name where the token will be saved. Default is 'oauth2Tokens'. The path is relative to the adapter instance, like 'adapterName.X.oauth2Tokens'", "type": "string" }, "identifier": { "description": "OAuth2 service identifier. Only known services are supported", "type": "string" }, "scope": { "description": "Optional scopes divided by space, e.g. `user-read-private user-read-email`", "type": "string" }, "refreshLabel": { "description": "Button label for refreshing the token", "type": "string" }, "label": true, "type": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "tooltip": true, "expertMode": true, "confirm": true }, "additionalProperties": false, "required": ["type", "identifier"] }, "fileSelectorProps": { "properties": { "pattern": { "type": "string", "description": "File extension pattern. Allowed '**/*.ext' to show all files from sub-folders too, '*.ext' to show from root folder or 'folderName/*.ext' to show all files in sub-folder folderName. Default '**/*.*'" }, "fileTypes": { "enum": ["audio", "image", "text"], "description": "Type of files" }, "objectID": { "type": "string", "description": "Object ID of type meta. You can use special placeholder '%INSTANCE%': like 'myAdapter.%INSTANCE%.files'" }, "upload": { "type": "string", "description": "path, where the uploaded files will be stored. Like 'folderName'. If not defined, no upload field will be shown. To upload in the root, set this field to '/'" }, "refresh": { "type": "boolean", "description": "Show refresh button near the select" }, "maxSize": { "type": "string", "description": "max file size (default 2MB)" }, "withFolder": { "type": "boolean", "description": "show folder name even if all files in same folder" }, "delete": { "type": "boolean", "description": "Allow deletion of files" }, "noNone": { "type": "boolean", "description": "Do not show 'none' option" }, "noSize": { "type": "boolean", "description": "Do not show size of files" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": [] }, "timePickerProps": { "properties": { "format": { "description": "Format passed to the date picker", "type": "string", "default": "HH:mm:ss" }, "views": { "description": "Configure which views should be shown to the users", "type": "array", "items": { "type": "string", "enum": ["hours", "minutes", "seconds"] }, "default": ["hours", "minutes", "seconds"] }, "timeSteps": { "description": "Represent the available time steps for each view", "type": "object", "additionalProperties": false, "default": { "hours": 1, "minutes": 5, "seconds": 5 }, "properties": { "hours": { "type": "number" }, "minutes": { "type": "number" }, "seconds": { "type": "number" } } }, "returnFormat": { "description": "Use `fullDate` or `HH:mm:ss`. Defaults to full date for backward compatibility reasons.", "type": "string", "enum": ["fullDate", "HH:mm:ss"] }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "style": true, "darkStyle": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "noTranslation": true }, "additionalProperties": false, "required": ["type"] }, "interfaceProps": { "properties": { "ignoreLoopback": { "description": "do not show loopback interface (127.0.0.1)", "type": "boolean" }, "ignoreInternal": { "description": "do not show internal interfaces (normally it is 127.0.0.1 too)", "type": "boolean" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] }, "coordinatesProps": { "properties": { "divider": { "description": "divider between latitude and longitude. Default \",\" (Used if longitudeName and latitudeName are not defined)", "type": "string" }, "autoInit": { "description": "init field with current coordinates if empty", "type": "boolean" }, "longitudeName": { "description": "if defined, the longitude will be stored in this attribute, divider will be ignored", "type": "string" }, "latitudeName": { "description": "if defined, the latitude will be stored in this attribute, divider will be ignored", "type": "string" }, "useSystemName": { "description": "if defined, the checkbox with \"Use system settings\" will be shown and latitude, longitude will be read from system.config, a boolean will be saved to the given name", "type": "string" }, "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "maxLength": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] }, "jsonEditorProps": { "properties": { "validateJson": { "description": "if false, the text will be not validated as JSON", "type": "boolean", "default": true }, "allowEmpty": { "type": "boolean", "description": "if true, the JSON will be validated only if the value is not empty" }, "json5": { "type": "boolean", "description": "if JSON5 format allowed" }, "doNotApplyWithError": { "type": "boolean", "description": "Do not allow to save the value if error in JSON or JSON5" }, "readOnly": { "type": "boolean", "description": "Open the editor in read-only mode - editor can be opened but content cannot be modified" }, "default": { "type": "string", "description": "Default content for JSON Editor" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "style": true, "darkStyle": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "noTranslation": true }, "additionalProperties": false, "required": ["type"] }, "doNotSaveProp": { "type": "boolean", "description": "Do not save this attribute as used only for internal calculations" }, "iconPositionProp": { "description": "Only for panels that has `icon` attribute.", "default": "start", "enum": ["bottom", "end", "start", "top"] }, "allowAddByFilterProp": { "type": "boolean", "description": "If add allowed even if filter is set", "default": false }, "alsoDependsOnSendProp": { "description": "Depends on other attributes and will be re-calculated when other attributes changed", "type": "array", "items": { "type": "string" } }, "noInternalProp": { "description": "Do not show internal IP addresses", "type": "boolean" }, "tableItems": { "description": "Items of the table", "type": "array", "items": { "type": "object", "required": ["type"], "allOf": [ { "if": { "properties": { "type": { "const": "language" } } }, "then": { "allOf": [ { "properties": { "system": { "description": "Allow the usage of the system language from system.config as default", "type": "boolean" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type", "system"] } ] } }, { "if": { "properties": { "type": { "const": "autocompleteSendTo" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" } ], "properties": { "attr": true, "width": true, "title": true, "filter": true, "sort": true, "command": { "description": "Command to be sent.", "type": "string" }, "jsonData": { "description": "Data to be sent as parsable string, can contain special placeholder. E. g. '{\"subject1\": \"${data.subject}\", \"options1\": {\"host\": \"${data.host}\"}}'", "type": "string" }, "data": { "description": "Data to be sent as JSON.", "type": "object" }, "freeSolo": { "description": "Set freeSolo to true so the textbox can contain any arbitrary value.", "type": "boolean" }, "placeholder": { "description": "Placeholder (for text control)", "type": "string" }, "alsoDependsOn": { "$ref": "#/definitions/alsoDependsOnSendProp" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true, "maxLength": true }, "additionalProperties": false, "required": ["type", "command"] } }, { "if": { "properties": { "type": { "const": "selectSendTo" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" } ], "properties": { "attr": true, "width": true, "title": true, "filter": true, "sort": true, "command": { "description": "Command to be sent.", "type": "string" }, "jsonData": { "description": "Data to be sent as parsable string, can contain special placeholder. E. g. '{\"subject1\": \"${data.subject}\", \"options1\": {\"host\": \"${data.host}\"}}'", "type": "string" }, "data": { "description": "Data to be sent as JSON.", "type": "object" }, "manual": { "description": "Allow manual editing. Without Dropdown", "type": "boolean" }, "doNotSave": { "$ref": "#/definitions/doNotSaveProp" }, "alsoDependsOn": { "$ref": "#/definitions/alsoDependsOnSendProp" }, "noTranslation": true, "multiple": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "confirm": true }, "additionalProperties": false, "required": ["type", "command"] } }, { "if": { "properties": { "type": { "const": "textSendTo" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" } ], "properties": { "attr": true, "width": true, "title": true, "filter": true, "sort": true, "container": { "description": "div, text", "type": "string" }, "copyToClipboard": { "description": "If true, show button", "type": "boolean" }, "alsoDependsOn": { "$ref": "#/definitions/alsoDependsOnSendProp" }, "command": { "description": "Command to be sent.", "type": "string" }, "jsonData": { "description": "Data to be sent as parsable string, can contain special placeholder. E. g. '{\"subject1\": \"${data.subject}\", \"options1\": {\"host\": \"${data.host}\"}}'", "type": "string" }, "data": { "description": "Data to be sent as JSON.", "type": "object" }, "noTranslation": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "confirm": true }, "additionalProperties": false, "required": ["type", "command"] } }, { "if": { "properties": { "type": { "const": "imageSendTo" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" } ], "properties": { "attr": true, "width": true, "title": true, "filter": true, "sort": true, "container": { "description": "div, text", "type": "string" }, "copyToClipboard": { "description": "If true, show button", "type": "boolean" }, "alsoDependsOn": { "$ref": "#/definitions/alsoDependsOnSendProp" }, "command": { "description": "Command to be sent.", "type": "string" }, "jsonData": { "description": "Data to be sent as parsable string, can contain special placeholder. E. g. '{\"subject1\": \"${data.subject}\", \"options1\": {\"host\": \"${data.host}\"}}'", "type": "string" }, "data": { "description": "Data to be sent as JSON.", "type": "object" }, "noTranslation": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "confirm": true }, "additionalProperties": false, "required": ["type", "command"] } }, { "if": { "properties": { "type": { "const": "header" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "size": { "description": "Size of the header: h1-h5", "type": "number", "minimum": 1, "maximum": 5 }, "text": { "description": "Header text", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type", "size", "text"] } ] } }, { "if": { "properties": { "type": { "const": "color" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } ] } }, { "if": { "properties": { "type": { "const": "divider" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "color": { "description": "Optional color", "type": "string", "enum": ["primary", "secondary"] }, "height": { "description": "Optional height", "type": "number" }, "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } ] } }, { "if": { "properties": { "type": { "const": "fileSelector" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" } ], "properties": { "attr": true, "width": true, "title": true, "filter": true, "sort": true, "pattern": { "type": "string", "description": "File extension pattern. Allowed '**/*.ext' to show all files from sub-folders too, '*.ext' to show from root folder or 'folderName/*.ext' to show all files in sub-folder folderName. Default '**/*.*'" }, "fileTypes": { "enum": ["audio", "image", "text"], "description": "Type of files" }, "objectID": { "type": "string", "description": "Object ID of type meta. You can use special placeholder '%INSTANCE%': like 'myAdapter.%INSTANCE%.files'" }, "upload": { "type": "string", "description": "path, where the uploaded files will be stored. Like 'folderName'. If not defined, no upload field will be shown. To upload in the root, set this field to '/'" }, "refresh": { "type": "boolean", "description": "Show refresh button near the select" }, "maxSize": { "type": "string", "description": "max file size (default 2MB)" }, "withFolder": { "type": "boolean", "description": "show folder name even if all files in same folder" }, "delete": { "type": "boolean", "description": "Allow deletion of files" }, "noNone": { "type": "boolean", "description": "Do not show 'none' option" }, "noSize": { "type": "boolean", "description": "Do not show size of files" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "const": "icon" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "crop": { "description": "If true, allow user to crop the image (only for non svg)", "type": "boolean" }, "square": { "description": "Width must be equal to height or crop must allow only square as shape", "type": "boolean" }, "maxWidth": { "description": "Maximum width", "type": "number" }, "maxHeight": { "description": "Maximum height", "type": "number" }, "maxSize": { "description": "Maximum size", "type": "number" }, "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } ] } }, { "if": { "properties": { "type": { "const": "panel" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "items": { "$ref": "#/definitions/topLevelProperties/properties/items" }, "icon": { "description": "Panel can have icon (base64)", "type": "string" }, "iconPosition": { "$ref": "#/definitions/iconPositionProp" }, "#include": { "description": "Include other JSON or JSON5 file. Here is the name of the file with extension. E.g. 'options.jsonConfig.json' for 'anyName.jsonConfig.json5'", "type": "string", "pattern": "^.+\\.jsonConfig(.json|.json5)$" }, "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "innerStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"], "oneOf": [ { "required": ["items"] }, { "required": ["#include"] } ] } ] } }, { "if": { "properties": { "type": { "const": "image" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "accept": { "description": "HTML accept attribute, like { 'image/**': [], 'application/pdf': ['.pdf'] }`, default `{ 'image/*': [] }", "type": "object" }, "crop": { "description": "If true, allow user to crop the image (only for non svg)", "type": "boolean" }, "square": { "description": "Width must be equal to height or crop must allow only square as shape", "type": "boolean" }, "maxWidth": { "description": "'Maximum width", "type": "number" }, "maxHeight": { "description": "'Maximum height", "type": "number" }, "maxSize": { "description": "'Maximum size", "type": "number" }, "filename": { "description": "Name of the file", "type": "string" }, "base64": { "description": "If true, the image will be saved as data-url in attribute, elsewise as binary in file storage", "type": "boolean" }, "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } ] } }, { "if": { "properties": { "type": { "const": "sendTo" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "command": { "description": "Command to be sent.", "type": "string" }, "color": { "description": "Optional color", "type": "string", "enum": ["primary", "secondary"] }, "icon": { "description": "sendTo can have icon (base64)", "type": "string" }, "jsonData": { "description": "Data to be sent as parsable string, can contain special placeholder. E. g. '{\"subject1\": \"${data.subject}\", \"options1\": {\"host\": \"${data.host}\"}}'", "type": "string" }, "data": { "description": "Data to be sent as JSON.", "type": "object" }, "result": { "description": "{result1: {en: 'A'}, result2: {en: 'B'}}", "type": "object" }, "error": { "description": "{error1: {en: 'E'}, error2: {en: 'E2'}}", "type": "object" }, "variant": { "description": "If outlined or contained", "type": "string", "enum": ["contained", "outlined"] }, "openUrl": { "description": "if true - open URL in new tab, if response contains attribute openUrl, like {\"openUrl\": \"http://1.2.3.4:80/aaa\", \"window\": \"_blank\", \"saveConfig\": true}. If saveConfig is true, the user will be requested to save the configuration.", "type": "boolean" }, "onLoaded": { "description": "if true - execute the button logic once initially", "type": "boolean" }, "placeholder": { "description": "Placeholder (for text control)", "type": "string" }, "useNative": { "description": "if adapter returns result with `native` attribute it will be used for configuration. If `saveConfig` is true, the user will be requested to save the configuration", "type": "boolean" }, "showProcess": { "description": "Show spinner while request is in progress", "type": "boolean" }, "attr": true, "label": true, "type": true, "width": true, "defaultSendTo": true, "allowSaveWithError": true, "title": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type", "command"] } ] } }, { "if": { "properties": { "type": { "const": "password" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" } ], "properties": { "encrypted": { "description": "Is value encrypted or not (of course only for texts)", "type": "boolean" }, "repeat": { "description": "Password must be compared with password", "type": "boolean" }, "visible": { "description": "True if allow to view the password by toggling the view button", "type": "boolean" }, "attr": true, "width": true, "sort": true, "title": true, "filter": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "const": "file" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "filename": { "description": "Name of the file", "type": "string" }, "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type", "filename"] } ] } }, { "if": { "properties": { "type": { "const": "slider" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "min": { "description": "Minimal value", "type": "number", "default": 0 }, "max": { "description": "Maximum value", "type": "number", "default": 100 }, "step": { "description": "Step size", "type": "number", "default": 1 }, "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } ] } }, { "if": { "properties": { "type": { "const": "custom" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "$ref": "#/definitions/customProps" } ] } }, { "if": { "properties": { "type": { "const": "checkbox" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" } ], "properties": { "attr": true, "width": true, "title": true, "filter": true, "sort": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "enum": ["number", "port"] } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" } ], "properties": { "attr": true, "width": true, "title": true, "filter": true, "sort": true, "placeholder": { "description": "Placeholder (for text control)", "type": "string" }, "min": { "description": "Minimal value", "type": "number" }, "max": { "description": "Maximum value", "type": "number" }, "step": { "description": "Step size for increase and decrease buttons", "type": "number" }, "unit": { "description": "Unit (could be multi-language)", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true, "doNotSave": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "const": "alive" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "$ref": "#/definitions/aliveProps" } ] } }, { "if": { "properties": { "type": { "const": "autocomplete" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "placeholder": { "description": "Placeholder (for text control)", "type": "string" }, "freeSolo": { "description": "Set freeSolo to true so the textbox can contain any arbitrary value.", "type": "boolean" }, "options": { "description": "Options which can be completed. [\"value1\", \"value2\", ...] or [{\"value\": \"value\", \"label\": \"Value1\"}, \"value2\", ...]", "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "additionalProperties": false, "properties": { "label": { "description": "Label of the option", "oneOf": [ { "description": "Value label", "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "value": { "description": "Value of the option", "oneOf": [ { "type": "number" }, { "type": "string" } ] }, "hidden": { "type": "boolean" }, "color": { "description": "Color of the option", "type": "string" } }, "required": ["label", "value"] } ] } }, "attr": true, "width": true, "title": true, "filter": true, "sort": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type", "options"] } ] } }, { "if": { "properties": { "type": { "const": "cron" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" } ], "properties": { "attr": true, "width": true, "title": true, "filter": true, "sort": true, "complex": { "description": "Show CRON with \"minutes\", \"seconds\" and so on", "type": "boolean" }, "simple": { "description": "Show simple CRON settings", "type": "boolean" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"], "oneOf": [ { "required": ["complex"] }, { "required": ["simple"] } ] } }, { "if": { "properties": { "type": { "const": "text" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" } ], "properties": { "attr": true, "width": true, "title": true, "filter": true, "sort": true, "text": { "description": "Text input", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "trim": { "description": "If text must be trimmed or not (default = true)", "type": "boolean" }, "placeholder": { "description": "Placeholder (for text control)", "type": "string" }, "minRows": { "description": "default is 1. Set this attribute to `2` or more if you want to have a textarea with more than one row", "type": "number" }, "maxRows": { "description": "max rows of textarea. Used only if `minRows` > 1", "type": "number" }, "readOnly": { "type": "boolean", "description": "Shows text as read only field" }, "noClearButton": { "type": "boolean", "description": "Do not show a clear button" }, "validateJson": { "type": "boolean", "description": "if true, the text will be validated as JSON" }, "allowEmpty": { "type": "boolean", "description": "if true, the JSON will be validated only if the value is not empty" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true, "maxLength": true, "doNotSave": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "const": "select" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" } ], "properties": { "attr": true, "width": true, "title": true, "filter": true, "sort": true, "options": { "description": "Options which can be selected", "type": "array", "items": { "type": "object", "required": ["label", "value"], "additionalProperties": false, "properties": { "label": { "description": "Label" }, "value": { "description": "Value" }, "hidden": { "type": "string", "description": "JS function that could use `native.attribute` for calculation" }, "group": { "description": "Is it a group or not", "type": "boolean" }, "color": { "type": "string" } } } }, "multiple": { "description": "If true, multiple values can be selected", "type": "boolean" }, "showAllValues": { "description": "Show item even if no label was found for it (by multiple), default=`true`", "type": "boolean" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "const": "pattern" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "pattern": { "description": "Read-only field with pattern like 'https://${data.ip}:${data.port}' (will not be saved in config)", "type": "string" }, "copyToClipboard": { "description": "If true, show copy button.", "type": "boolean" }, "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type", "pattern"] } ] } }, { "if": { "properties": { "type": { "const": "setState" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "color": { "description": "Optional color", "type": "string", "enum": ["primary", "secondary"] }, "icon": { "description": "setState can have icon (base64)", "type": "string" }, "id": { "description": "State ID, e.g. 'info.test'", "type": "string" }, "ack": { "description": "ack-flag of the state", "type": "boolean", "default": false }, "val": { "description": "State value to set" }, "okText": { "description": "Alert that will be shown by pressing the button", "type": "string" }, "error": { "description": "{error1: {en: 'E'}, error2: {en: 'E2'}}", "type": "object" }, "variant": { "description": "If outlined or contained", "type": "string", "enum": ["contained", "outlined"] }, "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type", "id", "val"] } ] } }, { "if": { "properties": { "type": { "const": "qrCode" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "data": { "description": "The data to be encoded in the QR Code", "type": "string" }, "size": { "description": "The size of the QR code", "type": "number" }, "fgColor": { "description": "Foreground color", "type": "string" }, "bgColor": { "description": "Background color", "type": "string" }, "level": { "description": "QR code level", "enum": ["L", "M", "Q", "H"] }, "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type", "data"] } ] } }, { "if": { "properties": { "type": { "const": "func" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "short": { "description": "no system.func.", "type": "string" }, "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } ] } }, { "if": { "properties": { "type": { "const": "room" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "short": { "description": "no system.room.", "type": "string" }, "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } ] } }, { "if": { "properties": { "type": { "const": "user" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "short": { "description": "no system.user.", "type": "string" }, "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } ] } }, { "if": { "properties": { "type": { "const": "ip" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "listenOnAllPorts": { "description": "Add 0.0.0.0 to option", "type": "boolean" }, "onlyIp4": { "description": "Show only IP4 addresses", "type": "boolean" }, "onlyIp6": { "description": "Show only IP6 addresses", "type": "boolean" }, "noInternal": { "$ref": "#/definitions/noInternalProp" }, "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } ] } }, { "if": { "properties": { "type": { "const": "certificate" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "certType": { "description": "Type of the certificate", "type": "string", "enum": ["public", "private", "chained"] }, "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type", "certType"] } ] } }, { "if": { "properties": { "type": { "const": "certificates" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "$ref": "#/definitions/certificatesProps" } ] } }, { "if": { "properties": { "type": { "const": "staticLink" } } }, "then": { "additionalProperties": false, "required": ["type"], "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "$ref": "#/definitions/staticLinkProps" } ], "properties": { "href": true, "text": true, "color": true, "icon": true, "variant": true, "attr": true, "width": true, "title": true, "filter": true, "sort": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true } } }, { "if": { "properties": { "type": { "const": "staticText" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" } ], "properties": { "attr": true, "width": true, "title": true, "filter": true, "sort": true, "text": { "description": "Static text like description", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"], "oneOf": [ { "required": ["text"] }, { "required": ["label"] } ] } }, { "if": { "properties": { "type": { "const": "staticInfo" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" } ], "properties": { "attr": true, "width": true, "title": true, "filter": true, "sort": true, "label": true, "type": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "tooltip": true, "expertMode": true, "noTranslation": true, "data": { "description": "Value to be shown", "type": ["object", "string", "number", "boolean"] }, "unit": { "description": "Unit (could be multi-language)", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "narrow": { "description": "With this flag, the value will appear just after the label", "type": "boolean" }, "addColon": { "description": "Add to label the colon at the end if not exist in label", "type": "boolean" }, "blinkOnUpdate": { "description": "Value should blink when updated (true or color)", "type": ["boolean", "string"] }, "blink": { "description": "Value should blink continuously (true or color)", "type": ["boolean", "string"] }, "styleLabel": { "description": "React CSS Styles for label", "type": "object" }, "styleValue": { "description": "React CSS Styles for value", "type": "object" }, "styleUnit": { "description": "React CSS Styles for unit", "type": "object" }, "copyToClipboard": { "description": "Show copy to clipboard button for value", "type": "boolean" }, "labelIcon": { "description": "Base64 icon for label", "type": "string" }, "highlight": { "description": "Highlight line on mouse over", "type": "boolean" }, "booleanAsCheckbox": { "description": "Show boolean values as checkbox", "type": "boolean" }, "html": { "description": "Show string values as HTML", "type": "boolean" }, "size": { "description": "Font size", "oneOf": [ { "default": "normal", "type": "string", "enum": ["small", "normal", "large"] }, { "type": "number" } ] } }, "additionalProperties": false, "required": ["type", "label", "data"] } }, { "if": { "properties": { "type": { "const": "instance" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" } ], "properties": { "attr": true, "width": true, "title": true, "filter": true, "sort": true, "adapter": { "description": "Name of the adapter. With special name _dataSources you can get all adapters with flag common.getHistory", "type": "string" }, "adapters": { "description": "Optional list of adapters, that should be shown. If not defined, all adapters will be shown. Only active if adapter attribute is not defined.", "type": "array", "items": { "type": "string" } }, "allowDeactivate": { "description": "If true. Additional option \"deactivate\" is shown", "type": "boolean" }, "onlyEnabled": { "description": "If true. Only enabled instances will be shown", "type": "boolean" }, "long": { "description": "Value will look like system.adapter.ADAPTER.0 and not ADAPTER.0", "type": "boolean" }, "short": { "description": "Value will look like 0 and not ADAPTER.0", "type": "boolean" }, "all": { "description": "Add to the options ALL option with value *", "type": "boolean" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type", "adapter"] } }, { "if": { "properties": { "type": { "const": "staticImage" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "src": { "description": "Name of picture (from admin directory)", "type": "string" }, "href": { "description": "Link", "type": "string" }, "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } ] } }, { "if": { "properties": { "type": { "const": "chips" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "delimiter": { "description": "Delimiter for options. If no delimiter, the setting will be stored as array", "type": "string" }, "attr": true, "width": true, "title": true, "filter": true, "sort": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } ] } }, { "if": { "properties": { "type": { "const": "objectId" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" } ], "properties": { "attr": true, "width": true, "title": true, "filter": true, "sort": true, "types": { "description": "Filter for one of the possible types: 'channel', 'device', ... (is state by default)", "oneOf": [ { "default": "state", "type": "string", "enum": [ "state", "channel", "device", "enum", "host", "adapter", "instance", "meta", "config", "script", "user", "group", "chart", "folder" ] }, { "type": "array", "maxItems": 1, "items": { "type": "string", "enum": [ "state", "channel", "device", "enum", "host", "adapter", "instance", "meta", "config", "script", "user", "group", "chart", "folder" ] } } ] }, "root": { "description": "Show only this root object and its children", "type": "boolean" }, "customFilter": { "description": "Cannot be used together with `types` settings. Example: `{type: ['channel', 'device']}` - show only channels and devices", "type": "string" }, "placeholder": { "description": "Placeholder (for text control)", "type": "string" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "const": "checkLicense" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "uuid": { "description": "If UUID must be checked too", "type": "boolean" }, "version": { "description": "Check version", "type": "boolean" }, "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "style": true, "darkStyle": true, "noMultiEdit": true, "noTranslation": true }, "additionalProperties": false } ] } }, { "if": { "properties": { "type": { "const": "checkDocker" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "attr": true, "label": true, "type": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "style": true, "darkStyle": true }, "additionalProperties": false } ] } }, { "if": { "properties": { "type": { "const": "uuid" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" }, { "properties": { "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "style": true, "darkStyle": true, "noMultiEdit": true, "noTranslation": true }, "additionalProperties": false } ] } }, { "if": { "properties": { "type": { "const": "datePicker" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" } ], "properties": { "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "const": "timePicker" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" } ], "properties": { "format": { "description": "Format passed to the date picker", "type": "string", "default": "HH:mm:ss" }, "views": { "description": "Configure which views should be shown to the users", "type": "array", "items": { "type": "string", "enum": ["hours", "minutes", "seconds"] }, "default": ["hours", "minutes", "seconds"] }, "timeSteps": { "description": "Represent the available time steps for each view", "type": "object", "additionalProperties": false, "default": { "hours": 1, "minutes": 5, "seconds": 5 }, "properties": { "hours": { "type": "number" }, "minutes": { "type": "number" }, "seconds": { "type": "number" } } }, "returnFormat": { "description": "Use `fullDate` or `HH:mm:ss`. Defaults to full date for backward compatibility reasons.", "type": "string", "enum": ["fullDate", "HH:mm:ss"] }, "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "const": "coordinates" } } }, "then": { "allOf": [ { "$ref": "#/definitions/tableItemBaseProps" } ], "properties": { "divider": { "description": "divider between latitude and longitude. Default \",\" (Used if longitudeName and latitudeName are not defined)", "type": "string" }, "autoInit": { "description": "init field with current coordinates if empty", "type": "boolean" }, "longitudeName": { "description": "if defined, the longitude will be stored in this attribute, divider will be ignored", "type": "string" }, "latitudeName": { "description": "if defined, the latitude will be stored in this attribute, divider will be ignored", "type": "string" }, "useSystemName": { "description": "if defined, the checkbox with \"Use system settings\" will be shown and latitude, longitude will be read from system.config, a boolean will be saved to the given name", "type": "string" }, "attr": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "maxLength": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } } ], "properties": { "label": { "oneOf": [ { "description": "Label of tab", "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "type": { "$ref": "#/definitions/componentType" }, "defaultSendTo": { "description": "Command to request initial value from running instance", "type": "string" }, "xs": { "description": "width in 1/12 of screen on very small screens", "type": "number" }, "sm": { "description": "Width in 1/12 of screen on small screen", "type": "number" }, "md": { "description": "width in 1/12 of screen on middle screens", "type": "number" }, "lg": { "description": "width in 1/12 of screen on large screens", "type": "number" }, "xl": { "description": "width in 1/12 of screen on extra large screens", "type": "number" }, "newLine": { "description": "Should be shown from new line", "type": "boolean" }, "hidden": { "description": "JS function that could use 'native.attribute' for calculation", "type": "string" }, "hideOnlyControl": { "description": "If hidden the place will be shown, but no control", "type": "boolean" }, "disabled": { "description": "JS function that could use 'native.attribute' for calculation", "type": "string" }, "helpLink": { "description": "href to help", "type": "string" }, "help": { "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "style": { "description": "CSS style in react notation: 'radiusBorder' and not 'radius-border'", "type": "object" }, "darkStyle": { "description": "CSS style for dark mode in react notation: 'radiusBorder' and not 'radius-border'", "type": "object" }, "validator": { "description": "JS function: true no error, false - error", "type": "string" }, "validatorNoSaveOnError": { "description": "True if save must be disabled by errors", "type": "boolean" }, "validatorErrorText": { "type": "string", "description": "Text to show if validator fails" }, "showSecondAddAt": { "description": "The number of lines from which the second add button at the bottom of the table will be shown. Default 5", "type": "number" }, "showFirstAddOnTop": { "type": "boolean", "description": "Show first plus button on top of the first column and not on the left." }, "tooltip": { "description": "Optional tooltip", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "default": { "description": "Default value" }, "onChange": { "type": "object", "additionalProperties": false, "properties": { "calculateFunc": { "description": "JS function: that calculates value", "type": "string" }, "ignoreOwnChanges": { "description": "Do not trigger onChange event if changed value of this attribute", "type": "boolean" }, "alsoDependsOn": { "$ref": "#/definitions/alsoDependsOnSendProp" } } }, "doNotSave": { "$ref": "#/definitions/doNotSaveProp" }, "defaultFunc": { "description": "JS function to calculate default value", "oneOf": [ { "type": "string" }, { "type": "object", "additionalProperties": false, "properties": { "func": { "description": "JS function: that calculates value", "type": "string" }, "alsoDependsOn": { "$ref": "#/definitions/alsoDependsOnSendProp" } } } ] }, "noTranslation": { "description": "Do not translate selects or other options (not for help, label or placeholder)", "type": "boolean" }, "confirm": { "description": "Confirm dialog", "type": "object", "additionalProperties": false, "properties": { "condition": { "description": "JS function: true show confirm dialog", "type": "string" }, "text": { "description": "Text of confirmation dialog", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "title": { "description": "Title of confirmation dialog", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "ok": { "description": "Text for 'OK' button", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "cancel": { "description": "Text for 'cancel' button", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "type": { "type": "string", "enum": ["info", "warning", "error", "none"] }, "alsoDependsOn": { "description": "Trigger confirm dialog if one of the components changed.", "type": "array", "items": { "type": "string" } } } }, "noMultiEdit": { "description": "(only custom) if this flag set to true, this field will not be shown if user selected more than one object for edit", "type": "boolean" }, "maxLength": { "description": "max length of text in field", "type": "number" }, "button": { "description": "show link as button", "type": "boolean" } } } }, "topLevelProperties": { "properties": { "type": { "type": "string", "description": "Control type", "enum": ["tabs", "panel"] }, "$schema": { "description": "Specify a JSON schema", "type": "string" }, "i18n": { "$ref": "#/definitions/i18n" }, "items": { "description": "Consists of objects representing e.g. a single tab", "type": "object", "patternProperties": { "^.+": { "description": "Object representing e.g. a tab", "type": "object", "allOf": [ { "if": { "properties": { "type": { "const": "language" } } }, "then": { "properties": { "system": { "description": "Allow the usage of the system language from system.config as default", "type": "boolean" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type", "system"] } }, { "if": { "properties": { "type": { "const": "autocompleteSendTo" } } }, "then": { "properties": { "command": { "description": "Command to be sent.", "type": "string" }, "jsonData": { "description": "Data to be sent as parsable string, can contain special placeholder. E. g. '{\"subject1\": \"${data.subject}\", \"options1\": {\"host\": \"${data.host}\"}}'", "type": "string" }, "data": { "description": "Data to be sent as JSON.", "type": "object" }, "freeSolo": { "description": "Set freeSolo to true so the textbox can contain any arbitrary value.", "type": "boolean" }, "placeholder": { "description": "Placeholder (for text control)", "type": "string" }, "alsoDependsOn": { "$ref": "#/definitions/alsoDependsOnSendProp" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true, "maxLength": true }, "additionalProperties": false, "required": ["type", "command"] } }, { "if": { "properties": { "type": { "const": "selectSendTo" } } }, "then": { "properties": { "command": { "description": "Command to be sent.", "type": "string" }, "jsonData": { "description": "Data to be sent as parsable string, can contain special placeholder. E. g. '{\"subject1\": \"${data.subject}\", \"options1\": {\"host\": \"${data.host}\"}}'", "type": "string" }, "data": { "description": "Data to be sent as JSON.", "type": "object" }, "manual": { "description": "Allow manual editing. Without Dropdown", "type": "boolean" }, "doNotSave": { "$ref": "#/definitions/doNotSaveProp" }, "alsoDependsOn": { "$ref": "#/definitions/alsoDependsOnSendProp" }, "noTranslation": true, "multiple": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "confirm": true }, "additionalProperties": false, "required": ["type", "command"] } }, { "if": { "properties": { "type": { "const": "textSendTo" } } }, "then": { "properties": { "container": { "description": "div, text", "type": "string" }, "copyToClipboard": { "description": "If true, show button", "type": "boolean" }, "alsoDependsOn": { "$ref": "#/definitions/alsoDependsOnSendProp" }, "command": { "description": "Command to be sent.", "type": "string" }, "jsonData": { "description": "Data to be sent as parsable string, can contain special placeholder. E. g. '{\"subject1\": \"${data.subject}\", \"options1\": {\"host\": \"${data.host}\"}}'", "type": "string" }, "data": { "description": "Data to be sent as JSON.", "type": "object" }, "noTranslation": true, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "confirm": true }, "additionalProperties": false, "required": ["type", "command"] } }, { "if": { "properties": { "type": { "const": "imageSendTo" } } }, "then": { "properties": { "alsoDependsOn": { "$ref": "#/definitions/alsoDependsOnSendProp" }, "command": { "description": "Command to be sent.", "type": "string" }, "jsonData": { "description": "Data to be sent as parsable string, can contain special placeholder. E. g. '{\"subject1\": \"${data.subject}\", \"options1\": {\"host\": \"${data.host}\"}}'", "type": "string" }, "data": { "description": "Data to be sent as JSON.", "type": "object" }, "label": true, "type": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "confirm": true }, "additionalProperties": false, "required": ["type", "command"] } }, { "if": { "properties": { "type": { "const": "header" } } }, "then": { "properties": { "size": { "description": "Size of the header: h1-h5", "type": "number", "minimum": 1, "maximum": 5 }, "text": { "description": "Header text", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type", "size", "text"] } }, { "if": { "properties": { "type": { "const": "color" } } }, "then": { "properties": { "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "const": "divider" } } }, "then": { "properties": { "color": { "description": "Optional color", "type": "string", "enum": ["primary", "secondary"] }, "height": { "description": "Optional height", "type": "number" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "const": "icon" } } }, "then": { "properties": { "crop": { "description": "If true, allow user to crop the image (only for non svg)", "type": "boolean" }, "square": { "description": "Width must be equal to height or crop must allow only square as shape", "type": "boolean" }, "maxWidth": { "description": "Maximum width", "type": "number" }, "maxHeight": { "description": "Maximum height", "type": "number" }, "maxSize": { "description": "Maximum size", "type": "number" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "const": "panel" } } }, "then": { "properties": { "items": { "$ref": "#/definitions/topLevelProperties/properties/items" }, "#include": { "description": "Include other JSON or JSON5 file. Here is the name of the file with extension. E.g. 'options.jsonConfig.json' for 'anyName.jsonConfig.json5'", "type": "string", "pattern": "^.+\\.jsonConfig(.json|.json5)$" }, "icon": { "description": "Panel can have icon (base64)", "type": "string" }, "iconPosition": { "$ref": "#/definitions/iconPositionProp" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "innerStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"], "oneOf": [ { "required": ["items"] }, { "required": ["#include"] } ] } }, { "if": { "properties": { "type": { "const": "image" } } }, "then": { "properties": { "accept": { "description": "HTML accept attribute, like { 'image/**': [], 'application/pdf': ['.pdf'] }`, default `{ 'image/*': [] }", "type": "object" }, "crop": { "description": "If true, allow user to crop the image (only for non svg)", "type": "boolean" }, "square": { "description": "Width must be equal to height or crop must allow only square as shape", "type": "boolean" }, "maxWidth": { "description": "'Maximum width", "type": "number" }, "maxHeight": { "description": "'Maximum height", "type": "number" }, "maxSize": { "description": "'Maximum size", "type": "number" }, "filename": { "description": "Name of the file", "type": "string" }, "base64": { "description": "If true, the image will be saved as data-url in attribute, elsewise as binary in file storage", "type": "boolean" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "const": "sendTo" } } }, "then": { "$ref": "#/definitions/sendToProps" } }, { "if": { "properties": { "type": { "const": "state" } } }, "then": { "$ref": "#/definitions/stateProps" } }, { "if": { "properties": { "type": { "const": "password" } } }, "then": { "$ref": "#/definitions/passwordProps" } }, { "if": { "properties": { "type": { "const": "file" } } }, "then": { "properties": { "filename": { "description": "Name of the file", "type": "string" }, "label": true, "type": true, "title": true, "filter": true, "sort": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type", "filename"] } }, { "if": { "properties": { "type": { "const": "slider" } } }, "then": { "properties": { "min": { "description": "Minimal value", "type": "number", "default": 0 }, "max": { "description": "Maximum value", "type": "number", "default": 100 }, "step": { "description": "Step size", "type": "number", "default": 1 }, "unit": { "description": "Unit (could be multi-language)", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "const": "custom" } } }, "then": { "$ref": "#/definitions/customProps" } }, { "if": { "properties": { "type": { "const": "checkbox" } } }, "then": { "$ref": "#/definitions/checkboxProps" } }, { "if": { "properties": { "type": { "const": "fileSelector" } } }, "then": { "$ref": "#/definitions/fileSelectorProps" } }, { "if": { "properties": { "type": { "enum": ["number", "port"] } } }, "then": { "$ref": "#/definitions/numberProps" } }, { "if": { "properties": { "type": { "const": "alive" } } }, "then": { "$ref": "#/definitions/aliveProps" } }, { "if": { "properties": { "type": { "const": "autocomplete" } } }, "then": { "properties": { "placeholder": { "description": "Placeholder (for text control)", "type": "string" }, "freeSolo": { "description": "Set freeSolo to true so the textbox can contain any arbitrary value.", "type": "boolean" }, "options": { "description": "Options which can be completed. [\"value1\", \"value2\", ...] or [{\"value\": \"value\", \"label\": \"Value1\"}, \"value2\", ...]", "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "additionalProperties": false, "properties": { "label": { "oneOf": [ { "description": "Value label", "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "value": { "oneOf": [ { "type": "number" }, { "type": "string" } ] }, "hidden": { "type": "boolean" }, "color": { "type": "string" } }, "required": ["label", "value"] } ] } }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type", "options"] } }, { "if": { "properties": { "type": { "const": "qrCode" } } }, "then": { "$ref": "#/definitions/qrCodeProps" } }, { "if": { "properties": { "type": { "const": "cron" } } }, "then": { "$ref": "#/definitions/cronProps" } }, { "if": { "properties": { "type": { "const": "deviceManager" } } }, "then": { "$ref": "#/definitions/deviceManagerProps" } }, { "if": { "properties": { "type": { "const": "text" } } }, "then": { "$ref": "#/definitions/textProps" } }, { "if": { "properties": { "type": { "const": "select" } } }, "then": { "properties": { "options": { "description": "Options which can be selected", "type": "array", "items": { "type": "object", "required": ["label", "value"], "additionalProperties": false, "properties": { "label": { "description": "Label" }, "value": { "description": "Value" }, "hidden": { "type": "string", "description": "JS function that could use `native.attribute` for calculation" }, "group": { "description": "Is this a group", "type": "boolean" }, "color": { "type": "string" } } } }, "multiple": { "description": "If true, multiple values can be selected", "type": "boolean" }, "showAllValues": { "description": "Show item even if no label was found for it (by multiple), default=`true`", "type": "boolean" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "const": "table" } } }, "then": { "properties": { "noDelete": { "description": "If delete or add disabled, If noDelete is false, add, delete and move up/down should work", "type": "boolean" }, "uniqueColumns": { "description": "Specify the 'attr' name of columns which need to be unique", "type": "array", "items": { "type": "string" } }, "compact": { "description": "Show table in compact mode", "type": "boolean" }, "export": { "description": "If export button should be shown. Export as csv file.", "type": "boolean" }, "import": { "description": "If import button should be shown. Import from csv file.", "type": "boolean" }, "clone": { "description": "If clone button should be shown. If true, the clone button will be shown. If attribute name, this name will be unique.", "type": "boolean" }, "encryptedAttributes": { "description": "These items will be encrypted before saving with simple (not SHA) encryption method", "type": "array", "items": { "type": "string" } }, "useCardFor": { "description": "Breakpoint that will be rendered as cards", "type": "array", "items": { "type": "string", "enum": ["xs", "sm", "md", "lg", "xl"] } }, "allowAddByFilter": { "$ref": "#/definitions/allowAddByFilterProp" }, "items": { "$ref": "#/definitions/tableItems" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true, "showSecondAddAt": true }, "required": ["type", "items"], "additionalProperties": false } }, { "if": { "properties": { "type": { "const": "pattern" } } }, "then": { "properties": { "pattern": { "description": "Read-only field with pattern like 'https://${data.ip}:${data.port}' (will not be saved in config)", "type": "string" }, "copyToClipboard": { "description": "If true, show copy button.", "type": "boolean" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type", "pattern"] } }, { "if": { "properties": { "type": { "const": "setState" } } }, "then": { "properties": { "color": { "description": "Optional color", "type": "string", "enum": ["primary", "secondary"] }, "icon": { "description": "setState can have icon (base64)", "type": "string" }, "id": { "description": "State ID, e.g. 'info.test'", "type": "string" }, "ack": { "description": "ack-flag of the state", "type": "boolean", "default": false }, "val": { "description": "State value to set" }, "okText": { "description": "Alert that will be shown by pressing the button", "type": "string" }, "error": { "description": "{error1: {en: 'E'}, error2: {en: 'E2'}}", "type": "object" }, "variant": { "description": "If outlined or contained", "type": "string", "enum": ["contained", "outlined"] }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type", "id", "val"] } }, { "if": { "properties": { "type": { "const": "func" } } }, "then": { "properties": { "short": { "description": "no system.func.", "type": "string" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "const": "room" } } }, "then": { "properties": { "short": { "description": "no system.room.", "type": "string" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "const": "user" } } }, "then": { "properties": { "short": { "description": "no system.user.", "type": "string" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "const": "ip" } } }, "then": { "properties": { "listenOnAllPorts": { "description": "Add 0.0.0.0 to option", "type": "boolean" }, "onlyIp4": { "description": "Show only IP4 addresses", "type": "boolean" }, "onlyIp6": { "description": "Show only IP6 addresses", "type": "boolean" }, "noInternal": { "$ref": "#/definitions/noInternalProp" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "const": "certificate" } } }, "then": { "properties": { "certType": { "description": "Type of the certificate", "type": "string", "enum": ["public", "private", "chained"] }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type", "certType"] } }, { "if": { "properties": { "type": { "const": "certificates" } } }, "then": { "$ref": "#/definitions/certificatesProps" } }, { "if": { "properties": { "type": { "const": "staticLink" } } }, "then": { "$ref": "#/definitions/staticLinkProps" } }, { "if": { "properties": { "type": { "const": "staticText" } } }, "then": { "properties": { "text": { "description": "Static text like description", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"], "oneOf": [ { "required": ["text"] }, { "required": ["label"] } ] } }, { "if": { "properties": { "type": { "const": "infoBox" } } }, "then": { "properties": { "text": { "description": "Text to be shown", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "title": { "description": "Title of the info box", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "boxType": { "description": "Type of the box", "type": "string", "enum": ["info", "warning", "error", "ok"] }, "closable": { "description": "If the box is closeable", "type": "boolean" }, "closed": { "description": "Use together with `closeable: true`. If the box is closed or not. In this case, it will be controlled from outside", "type": "boolean" }, "iconPosition": { "description": "Position of the icon", "type": "string", "enum": ["top", "middle"] }, "type": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "noTranslation": true, "style": true, "expertMode": true }, "additionalProperties": false, "required": ["type", "text"] } }, { "if": { "properties": { "type": { "const": "staticInfo" } } }, "then": { "properties": { "label": true, "type": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "tooltip": true, "expertMode": true, "noTranslation": true, "data": { "description": "Value to be shown", "type": ["object", "string", "number", "boolean"] }, "unit": { "description": "Unit (could be multi-language)", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "narrow": { "description": "With this flag, the value will appear just after the label", "type": "boolean" }, "addColon": { "description": "Add to label the colon at the end if not exist in label", "type": "boolean" }, "blinkOnUpdate": { "description": "Value should blink when updated (true or color)", "type": ["boolean", "string"] }, "blink": { "description": "Value should blink continuously (true or color)", "type": ["boolean", "string"] }, "styleLabel": { "description": "React CSS Styles for label", "type": "object" }, "styleValue": { "description": "React CSS Styles for value", "type": "object" }, "styleUnit": { "description": "React CSS Styles for unit", "type": "object" }, "copyToClipboard": { "description": "Show copy to clipboard button for value", "type": "boolean" }, "labelIcon": { "description": "Base64 icon for label", "type": "string" }, "highlight": { "description": "Highlight line on mouse over", "type": "boolean" }, "booleanAsCheckbox": { "description": "Show boolean values as checkbox", "type": "boolean" }, "html": { "description": "Show string values as HTML", "type": "boolean" }, "size": { "description": "Font size", "oneOf": [ { "default": "normal", "type": "string", "enum": ["small", "normal", "large"] }, { "type": "number" } ] } }, "additionalProperties": false, "required": ["type", "label", "data"] } }, { "if": { "properties": { "type": { "const": "instance" } } }, "then": { "$ref": "#/definitions/instanceProps" } }, { "if": { "properties": { "type": { "const": "staticImage" } } }, "then": { "properties": { "src": { "description": "Name of picture (from admin directory)", "type": "string" }, "href": { "description": "Link", "type": "string" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "const": "chips" } } }, "then": { "properties": { "delimiter": { "description": "Delimiter for options. If no delimiter, the setting will be stored as array", "type": "string" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true }, "additionalProperties": false, "required": ["type"] } }, { "if": { "properties": { "type": { "const": "objectId" } } }, "then": { "$ref": "#/definitions/objectIdProps" } }, { "if": { "properties": { "type": { "const": "oauth2" } } }, "then": { "$ref": "#/definitions/oauth2Props" } }, { "if": { "properties": { "type": { "const": "checkLicense" } } }, "then": { "properties": { "uuid": { "description": "If UUID must be checked too", "type": "boolean" }, "version": { "description": "Check version", "type": "boolean" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "style": true, "darkStyle": true, "noMultiEdit": true, "noTranslation": true }, "additionalProperties": false } }, { "if": { "properties": { "type": { "const": "checkDocker" } } }, "then": { "properties": { "label": true, "type": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "style": true, "darkStyle": true }, "additionalProperties": false } }, { "if": { "properties": { "type": { "const": "datePicker" } } }, "then": { "properties": { "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "style": true, "darkStyle": true, "noMultiEdit": true, "noTranslation": true }, "additionalProperties": false } }, { "if": { "properties": { "type": { "const": "timePicker" } } }, "then": { "$ref": "#/definitions/timePickerProps" } }, { "if": { "properties": { "type": { "const": "uuid" } } }, "then": { "properties": { "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "style": true, "darkStyle": true, "noMultiEdit": true, "noTranslation": true }, "additionalProperties": false } }, { "if": { "properties": { "type": { "const": "coordinates" } } }, "then": { "$ref": "#/definitions/coordinatesProps" } }, { "if": { "properties": { "type": { "const": "jsonEditor" } } }, "then": { "$ref": "#/definitions/jsonEditorProps" } }, { "if": { "properties": { "type": { "const": "interface" } } }, "then": { "$ref": "#/definitions/interfaceProps" } }, { "if": { "properties": { "type": { "const": "accordion" } } }, "then": { "properties": { "titleAttr": { "description": "Title shown on the accordion", "type": "string" }, "noDelete": { "description": "If delete or add disabled, If noDelete is false, add, delete and move up/down should work", "type": "boolean" }, "clone": { "description": "If clone button should be shown. If true, the clone button will be shown. If attribute name, this name will be unique.", "type": "boolean" }, "items": { "$ref": "#/definitions/tableItems" }, "label": true, "type": true, "defaultSendTo": true, "allowSaveWithError": true, "xs": true, "sm": true, "md": true, "lg": true, "xl": true, "newLine": true, "hidden": true, "hideOnlyControl": true, "disabled": true, "helpLink": true, "help": true, "style": true, "darkStyle": true, "validator": true, "validatorNoSaveOnError": true, "validatorErrorText": true, "noMultiEdit": true, "tooltip": true, "expertMode": true, "default": true, "defaultFunc": true, "onChange": true, "noTranslation": true, "confirm": true, "showSecondAddAt": true }, "required": ["type", "items"], "additionalProperties": false } }, { "if": { "properties": { "type": { "const": "state" } } }, "then": { "$ref": "#/definitions/stateProps" } } ], "required": ["type"], "properties": { "label": { "oneOf": [ { "description": "Label of tab", "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "type": { "$ref": "#/definitions/componentType" }, "defaultSendTo": { "description": "Command to request initial value from running instance", "type": "string" }, "allowSaveWithError": { "description": "Allow saving of configuration even if the instance is offline. Used with defaultSendTo", "type": "boolean" }, "xs": { "description": "width in 1/12 of screen on very small screens", "type": "number" }, "sm": { "description": "Width in 1/12 of screen on small screen", "type": "number" }, "md": { "description": "width in 1/12 of screen on middle screens", "type": "number" }, "lg": { "description": "width in 1/12 of screen on large screens", "type": "number" }, "xl": { "description": "width in 1/12 of screen on extra large screens", "type": "number" }, "newLine": { "description": "Should be shown from new line", "type": "boolean" }, "hidden": { "description": "JS function that could use 'native.attribute' for calculation", "type": "string" }, "hideOnlyControl": { "description": "If hidden the place will be shown, but no control", "type": "boolean" }, "disabled": { "description": "JS function that could use 'native.attribute' for calculation", "type": "string" }, "helpLink": { "description": "href to help", "type": "string" }, "help": { "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "style": { "description": "CSS style in react notation: 'radiusBorder' and not 'radius-border'", "type": "object" }, "darkStyle": { "description": "CSS style for dark mode in react notation: 'radiusBorder' and not 'radius-border'", "type": "object" }, "innerStyle": { "description": "CSS style in react notation: 'radiusBorder' and not 'radius-border'", "type": "object" }, "validator": { "description": "JS function: true no error, false - error", "type": "string" }, "validatorNoSaveOnError": { "description": "True if save must be disabled by errors", "type": "boolean" }, "validatorErrorText": { "type": "string", "description": "Text to show if validator fails" }, "showSecondAddAt": { "description": "Number of lines from which the second add button at the bottom of the table will be shown. Default 5", "type": "number" }, "tooltip": { "description": "Optional tooltip", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "default": { "description": "Default value" }, "onChange": { "type": "object", "additionalProperties": false, "properties": { "calculateFunc": { "description": "JS function: that calculates value", "type": "string" }, "ignoreOwnChanges": { "description": "Do not trigger onChange event if changed value of this attribute", "type": "boolean" }, "alsoDependsOn": { "$ref": "#/definitions/alsoDependsOnSendProp" } } }, "doNotSave": { "$ref": "#/definitions/doNotSaveProp" }, "defaultFunc": { "description": "JS function to calculate default value", "oneOf": [ { "type": "string" }, { "type": "object", "additionalProperties": false, "properties": { "func": { "description": "JS function: that calculates value", "type": "string" }, "alsoDependsOn": { "$ref": "#/definitions/alsoDependsOnSendProp" } } } ] }, "noTranslation": { "description": "Do not translate selects or other options (not for help, label or placeholder)", "type": "boolean" }, "confirm": { "description": "Confirm dialog", "type": "object", "additionalProperties": false, "properties": { "condition": { "description": "JS function: true show confirm dialog", "type": "string" }, "text": { "description": "Text of confirmation dialog", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "title": { "description": "Title of confirmation dialog", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "ok": { "description": "Text for 'OK' button", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "cancel": { "description": "Text for 'cancel' button", "oneOf": [ { "type": "string" }, { "$ref": "#/definitions/multilingual" } ] }, "type": { "type": "string", "enum": ["info", "warning", "error", "none"] }, "alsoDependsOn": { "description": "Trigger confirm dialog if on of the components changed.", "type": "array", "items": { "type": "string" } } } }, "noMultiEdit": { "description": "(only custom) if this flag set to true, this field will not be shown if user selected more than one object for edit", "type": "boolean" }, "expertMode": { "description": "If this flag set to true, this field will be shown only if the expert mode is true", "type": "boolean" }, "maxLength": { "description": "max length of text in field", "type": "number" }, "button": { "description": "show link as button", "type": "boolean" } } } } } } } }, "if": { "properties": { "type": { "const": "tabs" } } }, "then": { "type": "object", "required": ["type"], "additionalProperties": false, "properties": { "type": true, "$schema": true, "i18n": true, "items": true, "iconPosition": true, "tabsStyle": true }, "allOf": [ { "$ref": "#/definitions/topLevelProperties" }, { "properties": { "iconPosition": { "$ref": "#/definitions/iconPositionProp" }, "tabsStyle": { "description": "CSS styles in ReactJS notation: 'radiusBorder' and not 'radius-border'", "type": "object" } } } ] }, "else": { "type": "object", "required": ["type"], "additionalProperties": false, "properties": { "type": true, "$schema": true, "i18n": true, "items": true }, "$ref": "#/definitions/topLevelProperties" } }