Browse documentation

Blocks overview

Every page in an Emberblocks app is a grid of blocks. A block is one self-contained unit — a table, a chart, a button row, a map — that you place, size, and configure on a 12-column canvas. This page covers what all blocks have in common; each block kind then has its own reference page.

Adding and arranging blocks

In the builder, open a view and press Add block to open the block palette — a searchable tile grid of all 21 kinds. Click a tile to drop the block onto the canvas, then drag to move it and pull the corner handle to resize. The canvas is a 12-column grid with 80-pixel rows; a view holds up to 24 blocks.

Blocks are independent: each one carries its own source table and configuration. Two blocks on the same page can show two different tables, or the same table filtered two different ways.

Data blocks vs. content blocks

  • Data blocks— table, cards, compact list, timeline, kanban, calendar, map, record, stat, chart, filter, signature, comments — bind to a table and read live rows through your app's permission rules.
  • Content blocks— text, image, barcode, embed, accordion, alert, buttons, separator, spinner — issue no data requests at all. On record pages they can still pull in the current record's values with {{Column}} templates (or, for the barcode block, a formula).

Settings every block shares

SettingWhat it does
TitleThe block's heading. Data blocks default to the source table's name.
DescriptionAn optional caption rendered under the title.
Show headerWhether the published app renders the title bar. Card-framed blocks default on; minimal content blocks (text, image, separator…) default off.
Auto heightWhen on, the block grows past its authored height to fit its content and pushes blocks below it down. When off, content scrolls inside the fixed cell.
Visible ifA boolean expression that must be true for the block to render — e.g. hide a block until RECORD[Status] = "Approved". See Expressions.
Visible to rolesRestrict the block to specific roles. Everyone sees it when the list is empty.

Extra settings on data blocks

SettingWhat it does
Source tableThe table the block reads. Every data block has exactly one primary source (maps and calendars can add extra sources).
Record filterOn record pages: a filter over the block's table that can reference the page's current record via RECORD[Field] and RECORDID() — the key to "show this customer's orders" layouts. Compiled server-side.
Page filterBinds the block to a filter block on the same page so viewer-chosen filters narrow its rows.

Blocks respect permissions everywhere

A block is a window onto your data, never a bypass. Row filters, role rules, and field-level permissions apply to every block in the builder preview, the published app, and public links alike. See Roles & permissions.

Minimum sizes and publishing

Some blocks need room to be usable: tables, cards, and charts require at least 3 grid rows of height. If a block is too small — or misconfigured, like a timeline without a date field — the publish check lists the exact problem and links you to it, and the app publishes only once the issue is fixed. See Publish & share.