Unify Logo Footer.svg
Unify Applications
Logo
Menu & Navigation Menu

Menu & Navigation Menu

Logo

7 mins READ

Menu

The Menu block renders a vertical list of clickable items — each with a label, optional caption, start/end icon or image, and a default or danger style. It works in two modes: Static (you compose the item list by hand) and Mapped (items are generated from a bound data source). Items can be plain Label items or Confirmation items that require a second click before acting. A new Menu arrives with three starter items at full width.

Tip: When to use Menu: Offer a flat list of actions or choices — row actions, quick links, a settings list. Build the list from data with Mapped mode. Add inline confirmation for destructive actions. For hierarchical navigation with nested items and links, use Navigation Menu instead.

Properties

Content

PropertyTypeDefaultDescription
type"STATIC" | "DYNAMIC"STATICStatic: hand-built item list. Mapped (Dynamic): generated from a bound data source.
dataarray (binding)Mapped only. (optional) The bound data source whose rows become menu items.
menuItemsitem listThree starter itemsStatic only. (optional) The hand-built item list.
initialSelectedMenuItemIdstringThe item that starts out selected when the menu loads.
menuItemitem templatetype label, variant defaultMapped only. (optional) Template applied to every row: Id, Label, Caption mapped from columns; Type, Variant, icons set once.

Per-Item Settings (Static Mode)

Each item in the Static list opens a detail panel with its own settings:

PropertyTypeDefaultDescription
type"label" | "confirmation"labelconfirmation asks for a second click before firing.
valuestringThe item's identifier — appears in selected state.
labelstringThe visible item text.
captionstringSecondary text under the label.
confirmationLabelstringText shown after the first click. Appears when type = confirmation.
appearance.variant"default" | "danger"defaultDanger styles the item red for destructive actions.
appearance.startDecoratoricon or imageIcon or image before the label.
appearance.endDecoratoricon or imageIcon or image after the label.

Appearance

PropertyTypeDefaultDescription
size"sm" | "md"mdCompact or regular item height.
stylesstyle setw-fullWidth/min/max, height/min/max, flex layout, margin, padding, gap.

Events

EventTriggerAvailable when
On ClickThat specific item is clicked (on each item)Static mode
On Menu Item ClickAny generated item is clickedMapped mode

Methods

MethodParamsEffect
selectMenuListItemmenuItemIdMarks the item as selected without firing any click event. Passing an unknown id clears the selection.

Exposed State

State keyTypeDescription
{{ id.selectedItem.id }}stringId of the last clicked or programmatically selected item.
{{ id.selectedItem.label }}stringLabel of that item.

Behavior & Gotchas

Warning: The whole menu disappears when it has no items to show. A Static menu whose items are all hidden and a Mapped menu with an empty data source render nothing at all — no placeholder.

Warning: Click events are wired differently in the two modes. Static: each item has its own On Click. Mapped: one block-level On Menu Item Click fires for all items. Switching modes means re-wiring events.

Note: A confirmation item stays confirming — there is no timeout. The item's text changes to its Confirmation Label and waits for a second click. There is no automatic revert.

Note: selectMenuListItem fires no event. It updates state but does not fire On Click or On Menu Item Click.

Examples

The Navigation Menu block (shown as "Navigation" in the block picker) renders a list of navigation items — a vertical sidebar or a horizontal top bar — and tracks which one is currently active. Each item is either a leaf (a single selectable tab drawn as a Custom entry or a Page link) or a Group that nests other items. Pair it with a Navigation Container and the container swaps its content whenever the menu's selection changes.

Tip: When to use Navigation Menu: Build the primary navigation for an interface — left sidebar or top bar — where one item stays highlighted as the active section. Group related destinations under a collapsible parent. Link items directly to static pages, or keep them Custom and drive your own content region.

Properties

Content

PropertyTypeDefaultDescription
itemsitem listThe navigation items. Each can be a leaf (Custom or Page) or a Group nesting other items.
direction"vertical" | "horizontal"verticalSidebar or top bar orientation.
initialSelectedItemIdstringThe item that starts out active when the menu loads.

Per-Item Settings

PropertyTypeDescription
labelstringThe item's visible text. Bindable, translatable.
variant"page" | "custom"Page links to a static interface page; Custom lets you wire your own content.
startDecoratoricon nameIcon shown before the label.
visibilityconditionHides the item when false.
permissionsruleHides the item from users who lack access.

Exposed State

State keyTypeDescription
{{ id.selectedItem.id }}stringThe currently active item's id.
{{ id.selectedItem.label }}stringThe currently active item's label.

Behavior & Gotchas

Note: Pair with Navigation Container for content switching. The menu is the control; the container is the content area it drives. Set the container's content source to the navigation menu's selected item.

Warning: Group items don't themselves have click actions. Groups are collapsible parent nodes — clicking them expands or collapses nested items rather than selecting the group itself.

The Navigation Container block renders different content depending on the selected item in a Navigation Menu. When the menu's active item changes, the container swaps the visible page or block to match. It is the content region paired with the Navigation Menu control.

Tip: When to use Navigation Container: Build a tabbed or routed content area whose visible pane changes when the user selects a nav item. The container handles the swap; the Navigation Menu handles the selection tracking.

Properties

PropertyTypeDefaultDescription
navigationMenuBlockIdblock referenceThe Navigation Menu block that drives this container's content.
itemsitem listA content slot for each navigable tab — each maps to a navigation item's id and holds child blocks.

Examples

BlockRelationship
Button Group (Toggle)A segmented control for simple view switching without nested groups.
TabsFull content-switching pattern with visible tab headers.
Navigation ContainerThe content area driven by Navigation Menu selection.

Frequently Asked Questions

What is the difference between Static and Mapped mode in the Menu block?

In Static mode, you define the menu items manually in the inspector — each item has a fixed label, icon and action. This is best for menus where the options are always the same. In Mapped mode, items are generated from a data source list (like a platform automaton result), and each item's label, icon and click behavior are bound to fields from that data. Use Mapped when the menu content comes from your data, like a list of user actions fetched from a permissions table.

How do I add a confirmation step before a destructive menu action?

In the Menu block's item settings, turn on the Confirmation toggle. A dialog appears when the user selects that item, asking them to confirm before the On Item Click event fires. You can customize the confirmation message and button labels in the item's detail panel.

How does the Navigation Container know which Navigation Menu item was selected?

The Navigation Container reads the Navigation Menu block's currently active item and renders the child blocks assigned to that item's Page or Custom target. You link a Navigation Container to a Navigation Menu by setting the Container's menu reference to the Navigation Menu block's ID. There is no event wiring needed — it's a declarative binding.

Can I have both Group and leaf items at the same level in a Navigation Menu?

Yes. A Navigation Menu can mix Group items (which expand to show child items) and leaf items (which navigate or fire On Item Click) at the same level of the hierarchy. Groups can also be nested — a Group can contain other Groups. The menu renders the structure you define in the items tree.