Layout
Groups, rows and the twelve-column grid.
Structure here is not a checkbox on a field, it is an element of its own. That has consequences for where something may sit and how wide it becomes.
Only the third kind takes anything at all.
A single-line input for short text. Character limits and an optional default value can be maintained under "Options".
CancelSave
Group and row. In the storefront a group becomes a fieldset with its own heading, a row divides up the width.
Heading, vertical line, line break, free text and four message kinds. They output, they do not ask.
The field types. Only these are validated and stored, and only these turn up in the submission.
The editor keeps to them, and the server checks them again on save.
Create top-level element
Groups exist only at the top level. A group inside a group is not provided for.
A row inside a row does not exist. That keeps the depth at three levels.
Inputs and content sit at the top, in a group or in a row.
The check does not only live in the editor. On save the server tidies up the parent relationships by the same rules. So a tree set by hand or through the API cannot end up in a state the output cannot render.
The width is a setting on the element, not a column of its own.
1 2 3 4 5 6 7 8 9 10 11 12
Above, the project row from the demo form, three times 4. Below, a mixed row: 3, 3 and 6 add up to 12 again.
Twelve is the full width, and every other number is its share of it. Three fields at 4 each stand side by side, two at 6 each likewise.
If an element is not inside a row, the full width always applies. For groups and rows themselves it always applies too, which is why the outline shows a dash there instead of a fraction.
On narrow screens the storefront wraps the row. Three thirds then become three full widths below one another.
Groups, rows and the twelve-column grid.
All 23 field types and what they do.
Mandatory fields, limits, CAPTCHA.
Twelve operators and the OR rule.