Skip to Content

Layout Components

Layout components are containers that organize child components and page structure.

This reference lists definition, custom configuration, data configuration, action configuration, and limitations. Shared Design fields: Design Panel.

General

Containers provide one or more sub-canvases. Children follow the parent’s layout and alignment.

Components Overview

ComponentClientsData tabActionPattern
ViewWeb, Native AppBasic container
ListWeb, Native AppList item only ✓Repeat render
Tab ViewWeb, Native AppTab page only ✓Tab switching
Conditional ViewWeb, Native AppBranch only ✓Conditional branches

View

Definition

Basic layout container — group components, Flex alignment, local scroll, hover styles.

⌨️ Shortcut: F

Custom configuration

PropertyTypeDefault / optionsClients & conditionsDescription
Edit stateenumNormal / HoverHover Web onlySeparate Normal and Hover styles.
Convert to Conditional ViewAllConverts this View to a Conditional View at the end of the layout flow.

Action configuration

Triggers: On click, On hover, On enter viewport, On scroll in viewport. See Trigger List.


List

Definition

Repeats one List item template per record — product lists, comments, messages. Supports vertical/horizontal layout, grid, carousel, load more, and pull-to-refresh.

Custom configuration

PropertyTypeDefault / optionsClients & conditionsDescription
DirectionenumVertical / HorizontalAllScroll axis; editor adjusts aspect when switching.
Columnsinteger1Vertical, carousel offItems per row. Fixed uses value; Auto computes from container width, item width, column gap.
Rowsinteger1Horizontal, carousel offItems per column. Auto from height, item height, row gap.
Row gapinteger (px)emptyAllVertical spacing between items.
Column gapinteger (px)emptycolumns > 1Horizontal grid spacing.
HeaderbooleanfalseAllSticky header sub-canvas (single instance, not repeated).
CarouselbooleanfalseAllCarousel mode; locks columns/rows to 1.
AutoplaybooleanfalseCarousel onAuto-advance slides.
LoopbooleantrueCarousel onWrap from last to first slide.
IndicatorsbooleantrueCarousel onDot indicators.

Load settings

Open via the gear icon under custom configuration.

PropertyTypeDefault / optionsClients & conditionsDescription
Scroll to bottom on refreshenumNever / Always / Manual refresh / Auto refreshAllAfter refresh, scroll to bottom (chat, logs).
Reverse loadbooleanfalseAllLoad more when scrolling up (history from bottom).
Preserve child statebooleanfalseAllKeep inputs inside items across data refresh.

Data configuration

On the Data tab.

PropertyTypeDefault / optionsDescription
Data sourcedatasetemptyTable query/subscription with filter, sort, dedupe, limit. Subscription disables pull-to-refresh and load more.
FilterexpressionemptyFilter logic; empty filter variables may return unfiltered data.
SortenumemptySort order.
DedupebooleanfalseShow one row per duplicate key; sort field should match dedupe field.
LimitintegeremptyMax records per request.
Load morebooleantrueWhen limit > 0, append next page at scroll end. Requires fixed list height (not fit-content).
Pull to refreshbooleanfalseNative App pull gesture to reload.
⚠️

List pitfalls:

  1. Load more: List height must be fixed (px or %) — fit-content has no scroll region.
  2. Missing filter values: If a filter depends on an empty variable, you may get unfiltered rows (e.g. one arbitrary city when city is unset).

Action configuration

The list container has no action configuration. Configure List item (and children) for clicks, navigation, modals — use list item and index context.

Sub-components

List item

Template canvas — design once, repeat per row.

Binding:

FieldMeaningExample
List itemCurrent row objectlist item.name, list item.price
IndexZero-based row indexindex + 1 for display row number

Auto layout: With Auto columns/rows, runtime computes fit; Fill remaining width/height stretches items to fill the row/column.

Optional sticky top area — filters, column titles, batch actions. Binds page variables or static content, not per-row fields.


Tab View

Definition

Switch between tab panels on one screen — order status, categories, grouped info. Each tab has its own sub-canvas.

Custom configuration

PropertyTypeDefault / optionsClients & conditionsDescription
ModeenumDefault / CustomAllCustom adds Selected/Unselected tab style sub-canvases.
Default tab indexinteger0AllActive tab on load; bindable; invalid values fall back to 0.
Tabsarray2 initial tabsAllTitles and order; first two cannot be deleted.
Preserve state on switchbooleantrueAllKeep hidden tab input/scroll state.

Action configuration

Parent has no action configuration. Configure Tab page sub-canvas or children inside.

Sub-components

  • Tab page — content for each tab; only active tab visible.
  • Custom tab styles (Custom mode) — Selected tab and Unselected tab appearance.

Conditional View

Definition

Mutually exclusive branches — logged in/out, roles, business states. One branch visible at a time.

Custom configuration

PropertyTypeDefault / optionsClients & conditionsDescription
Preserve state on switchbooleantrueAllKeep hidden branch form/scroll state.

Branches

SettingTypeDefault / rulesDescription
Branchesarray1 normal + 1 init branchAdd, delete, reorder. Each normal branch has a sub-canvas.
Conditionboolean expressionnormal default: alwaysWhen true, branch can show. Put specific conditions first.
Init branchbuilt-incannot deleteShown while data/conditions are not ready; no condition field.

Notes:

  • Higher branches win when multiple conditions are true.
  • Fit-content height follows the active branch.
  • Use Switch conditional branch action on buttons to change branch programmatically.

Action configuration

Parent has no action configuration. Configure branch sub-canvas or children inside.

Sub-components

One sub-canvas per branch, including the built-in Init branch.

Last updated on