Building Layouts
Buildocs UI Engine uses the Row Widget as the primary layout tool. Rows divide the canvas horizontally into segments, letting you place multiple widgets side by side on the same line.
The Row Widget
A Row is a horizontal container that splits its width into one or more segments. Each segment holds a single widget.
Rows can be placed:
- Directly on the canvas — to lay out widgets at the top level of the form
- Inside a TabBox tab panel — to lay out widgets within a tab
Rows cannot be nested inside other rows or inside a Table.
Responsive Scaling
Forms built with Rows are automatically scaled on smart devices (phones and tablets). You do not need to configure breakpoints or write custom styles — the layout adjusts to the available screen size without any extra steps.
Adding a Row to the Canvas
- Open your form in the Form Builder
- Locate the Row widget in the component palette
- Drag the widget onto the canvas and drop it in the desired position
- The row is added with a single segment by default
Creating Segments
By default a new row has one segment that spans the full width. To add columns:
- Select the Row on the canvas
- Open the Properties Panel
- Change the Segment Count property to the number of columns you want (e.g.,
2for a two-column layout,3for three columns)
By default all segments share the row width equally. Segment widths can be adjusted individually — see Controlling Segment Widths below.
Selecting a Segment
Each segment is individually configurable. How you select it depends on whether it is empty or occupied:
- Blank segment — click directly on the segment. It becomes selected and its properties appear in the Properties Panel.
- Segment containing a widget — hover over the segment to reveal a bold left border. Click that border to select the segment. This lets you configure segment-level properties without accidentally selecting the widget inside.
To configure the widget inside a segment, click the widget. To configure the segment itself, use the bold left border on hover.
Controlling Segment Widths
By default, all segments have equal width. You can adjust the relative width of each segment using the Flex-grow property:
- All segments at
Flex-grow: 1→ equal widths - One segment at
Flex-grow: 2, others at1→ that segment takes twice as much space
You can also set a Min-width on any segment to prevent it from shrinking below a certain size (e.g., 120px).
Placing Widgets in Segments
Drag any widget from the component palette and drop it into a segment. Each segment holds exactly one widget — dropping a second widget into an occupied segment is not allowed.
Supported inside a Row segment:
- Input
- Textarea
- Select
- Checkbox
- Radio
- Button
- Label
- File Uploader
Not supported inside a Row segment:
- Row (rows cannot be nested)
- TabBox
- Table
Common Layout Patterns
Two-column form
Place a Row with Segment Count: 2 and drop one field into each segment. Both segments share the width equally by default.
[ First Name ] [ Last Name ]
Three-column form
Place a Row with Segment Count: 3. To make City wider than State and ZIP, set City's Flex-grow to 2 and leave the others at 1.
[ City ] [ State ] [ ZIP ]
Mixed rows
Stack multiple rows on the canvas. Each row is independent and can have a different segment count.
[ Full Name ] ← Row with 1 segment
[ Street Address ] ← Row with 1 segment
[ City ] [ State ] [ ZIP ] ← Row with 3 segments
Layout inside a tab
Add a TabBox to the canvas, then drag Rows into individual tab panels to arrange fields within each tab.
Tab: Contact Info
[ Email ] [ Phone ]
Tab: Address
[ Street ]
[ City ] [ State ] [ ZIP ]