Portal Community

Common Control Properties

These properties appear for every control type, regardless of category:

PropertyTypeDescription
idstringUnique identifier within the form. Auto-generated; can be renamed.
labelstringText shown above the control. Supports markdown for formatting.
descriptionstringHelp text shown below the control. For label controls, this IS the content.
requiredbooleanShows required indicator and blocks submit if empty.
disabledbooleanRenders the control as non-interactive (greyed out).
hiddenbooleanHides the control in all modes. Use modeVisibilitySettings for mode-specific hiding.
ordernumberSort order within the section. Managed by drag-and-drop; you can override numerically.
widthfull | half | thirdColumn span: 12 (full row), 6 (half), or 4 (third) columns.

Validation Configuration

The Validation tab surfaces all available rules for the selected control type. Rules that don't apply to the control type are hidden.

// Example control with validation rules
{
  "id": "email-address",
  "type": "email",
  "label": "Email Address",
  "required": true,
  "validation": {
    "required": true,
    "minLength": 5,
    "maxLength": 254,
    "email": true,
    "message": "Please enter a valid email address"
  }
}

Binding Configuration

The Binding tab connects the control to your data model. Every control that stores a value needs a binding path. Controls without a binding path are UI-only (display controls like label and header do not need binding).

// Binding a text control to a JSON path
{
  "id": "company-name",
  "type": "text",
  "label": "Company Name",
  "binding": {
    "source": "$json",
    "path": "company.name"
  }
}

// Binding to workflow context
{
  "id": "workflow-id",
  "type": "text",
  "label": "Workflow ID",
  "binding": {
    "source": "$context",
    "path": "workflowInstanceId"
  }
}

Visibility Configuration

The Visibility tab has two sections:

Mode Visibility Settings

Toggle visibility per operating mode. By default all modes are enabled. Untick a mode to hide the control when the form is rendered in that mode.

{
  "modeVisibilitySettings": {
    "edit": true,
    "view": false,
    "design": true,
    "admin": true,
    "preview": false
  }
}

Visibility Rule

An expression that evaluates to true/false based on other field values. The control is only shown when the expression is true.

// Show the "Other" field only when the select is set to "other"
{
  "id": "industry-other",
  "type": "text",
  "label": "Other Industry",
  "visibilityRule": "values['industry-type'] === 'other'"
}

Advanced / Control-Specific Properties

Each control type has additional settings in the Advanced tab. Examples:

Control TypeAdvanced Properties
textplaceholder, maxLength, inputMode (text/search/tel)
selectoptions[] (static list or API endpoint), searchable, clearable
dateminDate, maxDate, dateFormat, locale
passwordshowStrengthMeter, showToggle, minScore
data-tablecolumns[], addable, deletable, maxRows
tabstabs[] (label + sectionId pairs), defaultTab, lazy
Live Preview While Editing Every property change immediately updates the control's appearance in the canvas. You do not need to save or refresh to see how the change looks — this is the design-mode advantage.