Emberblocks

Search documentation

Search docs pages by title or description

Your apps
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.

Try it: Use the filter block: every other block on the page (the stat tiles, the chart, and the table) narrows to the same rows.
Orders
8
Count
Revenue
€10.4k
Sum · Amount
Satisfaction
4.3
Avg · Rating
Filters
Status
Customer
Created
–
Amount
–
Revenue by month
€0€2.5k€5.0k€7.5k€10.0kJanFebMar
Orders
8 rows
OrderCustomerStatusTotal
#1042Nordic Supply ABShipped€1,240.00
#1041Beck & SöhneProcessing€312.50
#1040Lumen StudioOn hold€868.00
#1039Harbor FoodsDelivered€2,088.00
#1038Vega ClinicDelivered€540.00
Showing 5 of 8
Example. One view built from six blocks on the 12-column grid: three stat tiles (4 columns each), a filter block (4 columns) beside a bar chart (8 columns), and a table (12 columns) below. All of them read the same Orders table with the page filter bound, so the filter narrows every one of them at once.

Adding and arranging blocks

In the builder, open a view and press the Add block pill at the bottom of the canvas (or the B key) to open the block palette, a searchable tile grid of all 25 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.

The Organize blocks button in the view header (left of the view settings gear) tidies the whole page in one go: it keeps your order, packs the blocks into full rows, gives the blocks that share a row the same height, and resizes everything to fit the screen without scrolling. Not what you wanted? The toast that follows has an Undo.

To reuse a block you have already set up, hover it on the canvas and press Duplicate in the small toolbar on its top edge, next to the settings gear (or select the block and press ⌘D). The copy lands right below the original with the same size, table and settings, the blocks underneath move down to make room, and the copy opens in the inspector ready to change.

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, comments — bind to a table and read live rows through your app's permission rules.
  • Content blocks— text, image, video, file viewer, 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] formulas (and, for the video, file viewer and barcode blocks, a formula).

Settings every block shares

SettingWhat it does
TitleAn optional heading above the block, and the only switch for it: give a block a title and the app shows it, clear the title and the heading goes. New blocks start untitled (the page already names itself in the navigation), so add one when a page holds several blocks that need telling apart. The alert block is the exception: its title is the bold heading inside the callout.
DescriptionAn optional caption under the title. It only shows on a block that has a title.
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.
BackgroundA soft tint behind the block. The default is your app's card surface (white in light mode, dark in dark mode), and each tint carries its own light and dark shade, so a colored block stays readable either way. On the blocks that normally render without a frame (text, image, alert, buttons, embeds), setting a background is also what gives them a panel.
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.