Text Block
A text block for headings, paragraphs, and dividers.
Widget description: textBlock
Text Block inserts a heading (H1 to H3), a paragraph of text, or a horizontal divider with a label into the form. It is used to structure long forms and provide explanatory text. The text can contain placeholders with field values, updating dynamically with the form. It is a virtual widget and is not saved to the list item.
Adding to the form
On the Widgets tab in the left palette, select Text / Heading / Divider and drag it into a section (or click “+”). A new block is created as an H2 heading “Block heading” spanning the full width of the section.
Inspector settings
| Option | Property | Description | Default |
|---|---|---|---|
| Display variant | textBlockConfig.variant | h1, h2, h3 (three heading sizes), paragraph (paragraph, preserves line breaks), divider (Line). | h2 |
| Text / Heading (supports [Field]) | textBlockConfig.content | Main text. For the Line variant, this is an optional divider label. | empty |
| Subtitle / secondary text | textBlockConfig.subtitle | Smaller gray text below the main text. Not available for Line. Supports placeholders. | empty |
| Alignment | textBlockConfig.align | left (Left), center (Center), right (Right). For Line, determines label position. | left |
| Color | textBlockConfig.color | default (Default), brand (Accent, theme color), muted (Muted). | default |
| Custom label | customLabel | Widget name. Displayed when content is empty. | “Section heading” |
| Column span, Visible | colSpan, defaultVisible | Common widget options. | 12, yes |
Runtime behavior
- The block is identical in all modes (New, Edit, View) and has no user inputs.
- The block only watches fields referenced in its placeholders. Typing into other fields does not trigger a re-render.
- Empty text falls back to
customLabel, and if that is also missing, to the default name “Text Block”. An empty Line renders as a plain horizontal rule.
Placeholders and templates
In both the main text and the subtitle, you can use:
| Syntax | Replaced with |
|---|---|
[Field] or {Field} | current value of the field by internal name (for choice, person, and lookup fields, the display label). An empty or unknown field produces an empty string. |
@Me | display name of the signed-in user |
@Today | today’s date in YYYY-MM-DD format |
This is pure text substitution with no calculations. For calculations, use expressions in a calculated field and then insert that field via [Field].
Text translations
customLabel, textBlockContent, and textBlockSubtitle (as well as textBlockHeading, see limitations) can be translated. Empty translations are ignored. See Translations and multilingual forms.
Rules and scripts
- setVisible: shows or hides the block, for example an “Approval” heading only in the Pending Approval status.
- Rules and scripts do not modify the text directly. It reacts to values of fields referenced in placeholders, so changing those fields (manually, via setValue, or via script) updates the text.
Configuration example (JSON)
{
"internalName": "widget_text_project",
"customLabel": "Project heading",
"fieldType": "textBlock",
"colSpan": 12,
"defaultVisible": true,
"textBlockConfig": {
"variant": "h2",
"content": "Project [Title]",
"subtitle": "Manager: [Manager], today is @Today",
"align": "left",
"color": "brand"
}
}
Limitations and tips
- Text is plain text: no bold formatting, links, or lists. Line breaks are preserved only in the
paragraphvariant. - The
textBlockConfig.heading(Block heading) property renders above the content whencontentis also set; it supports the same[Field]placeholders and is translatable. It is not used for the “Line” variant. If onlyheadingis set (withoutcontent), it renders as the main text in the chosen variant. - For colored warning or info messages, use Banner instead. For plain spacing between fields, use Spacer.