Status: Public Preview — behaviour may change.
What it does
Shows a table of records as responsive cards with a fixed layout: title, subtitle, description and up to two images. The column count adjusts to the available width, cards can be grouped under collapsible headings, and users can select one or several.
Key facts
- It isn't a classic gallery. There's no template to drop child controls into; you map Title, Subtitle, Description, Image and HeaderImage with
ThisItemexpressions and style it through properties. - Layout is driven by MinCardWidth (240, or 280 on phone), MaxColumns (0 means no cap), Gap (16) and CardHeight (200, minimum 50). Every card shares one height; there's no per-record auto height.
- Selectable is on by default. SelectMultiple and ShowSelector control the model. With multi-select and the selector hidden, a plain click replaces the selection, while Ctrl or Command click and keyboard activation toggle individual cards.
- Outputs are Selected (the last record in the selection, which isn't always the one just clicked in multi-select), SelectedItems (a table of the original records) and IsLoading.
- Event order is selection updates, then OnChange, then OnSelect. Clicking the already selected card in single-select mode still fires OnSelect.
- GroupBy takes a text expression such as
ThisItem.Team. Matching is case-insensitive and groups appear in first-seen order. Mixing blank and named group values gives an invalid-grouping state. - Reset to the default selection with
Reset(GalleryName). The property is Default, a single record, not a table. - No built-in search or sort. Prepare the table you pass to Items.
When to use / skip
Use it for read-mostly browse screens: projects, products, team directories, anything where a card with a title and a few lines does the job and you want it to reflow on phone and desktop without building a flexible-height gallery by hand.
Skip it when each card needs buttons, icons or mixed controls, or when row heights vary. That's still a classic gallery with a template. Also skip it for anything you can't have changing under you while it's in preview.
Configuration decisions
- Single or multi-select, and whether to keep the selection indicators visible.
- Whether to group, and which field gives a guaranteed non-blank value for every record.
- CardHeight and MinCardWidth, tested against your longest titles and descriptions.
- Where search and sorting happen, since the control won't do either.
Gotchas
- Pass a column name as a string where you meant
ThisItem.Columnand every card shows the literal text. - Virtualisation only limits what's rendered. It doesn't make a non-delegable Items formula retrieve more rows.
- Hiding selectors doesn't turn selection off; Selectable does. A read-only screen with ShowSelector false can still change Selected.
- A blank group value on a few records quietly breaks grouping for the lot.
- Set ItemAccessibleLabel and image alternative text. The defaults won't tell a screen reader anything useful.
Consultant notes
- Settle the card content with the business before building. People ask for "just one extra button on each card" in UAT, and that's a gallery rebuild.
- Group on a calculated, always-populated column in your collection rather than the raw field. It saves a week of "why has this group vanished" tickets.
- Check keyboard navigation (arrows, Home, End) in grouped and ungrouped layouts before accessibility sign-off.
- Preview controls change properties between releases. Keep the YAML in source control so you can diff after an update.
Revisit when it reaches GA; the property set and the preview label are both likely to move.