Skip to content

Content action bar

The content action bar is a container for actions related to specific content. Actions are available as buttons or dropdown menus, each triggering specific functionalities.

Usage

The content action bar groups contextually related actions that serve a common purpose within a specific content area. For example, actions such as 'Edit', 'Delete', and 'Share' are used to manage specific pieces of content, like documents or images.

The content action bar groups primary and secondary actions and adjusts to the available space.

Content action bar

When to use

  • When multiple actions that are closely related and need to be presented together.
  • When an action stands alone or does not relate to other actions, use a regular button.
  • If the primary requirement is simply to have a menu that remains consistently collapsed, use a tertiary circle button with a menu.

Design

Elements

The content action bar includes primary actions, which are always visible and prioritized, and optional secondary actions, which can be accessed through a menu.

Content action elements

  1. Primary actions, 2. Secondary actions (optional), (4) Close button

Button types

The content action bar includes standard and dropdown buttons. Standard buttons can display text, icons, or both, while dropdowns support text or text with icons.

Content action button types

Icons should be used as needed; however, avoid mixing text-with-icon buttons with icon-only buttons whenever possible.

Content action button types examples

Variants

The content action bar can be set to behave in two main ways, depending on the layout needs:

Expanded/Toolbar

In the expanded/toolbar variant, all actions are always displayed, providing consistent visibility and quick access. This configuration is useful when actions need to be readily available, such as in editors or builder interfaces (e.g., a floor plan editor or dashboard builder).

Content action toolbar

Collapsible

In the collapsible variant, users can expand the content action bar as needed to reveal the available options. Pressing the close button will collapse all actions under a menu. This setup allows for a more compact layout when space is limited or when actions are needed less frequently.

Content action collapsible

Responsive behavior

When the screen size is reduced, actions can automatically collapse into a menu in both the Toolbar and Collapsible variants. If the primary requirement is simply to have a menu that remains consistently collapsed, use a tertiary circle button with a menu.

Content action responsive

Code

It can be used in one of three variations pointed out in Design section by providing related viewType input as collapsible, expanded or mobile. View type expanded is default.

Usage

import { SiContentActionBarComponent } from '@siemens/element-ng/content-action-bar';

@Component({
  imports: [SiContentActionBarComponent, ...]
})

Action bar configuration

Configure the content action bar with MenuItems as primary and secondary actions. You can configure an Angular router or a href target as well as a custom action. Sub-menus are supported by the items property.

Action item states

Use the MenuItem states disabled, isActive, badge and badgeColor for configuration of item states. Use semantic bootstrap colors like warning or success as badgeColor.

Action toolbar

Use the MenuItem property icon to provide icons for all primary actions.

SiContentActionBarComponent API Documentation

selector
si-content-action-bar

Input Properties

Name Type Default Description
actionParam
any A param that will be passed to the action in the primary/secondary actions. This allows to re-use the same primary/secondary action arrays across rows in a table.
disabled
boolean false Disables the whole content-action-bar.
preventIconsInDropdownMenus
boolean false Option to remove all icons from dropdown menus of the content action bar.

Some apps provide only few actions with icons, located in the set of primary actions. The icons are visible in the collapsible and expanded view type. On reduced space, primary actions are relocated in the same dropdown menu as the secondary actions. The dropdown menu can look unbalanced, if a large number of secondary actions without icons are presented with few actions with icons. This option balances the look and feel by removing all icons from actions in the dropdown menu.
primaryActions
readonly (MenuItem | ContentActionBarMainItem)[] List of primary actions. Supports up to 4 actions and omits additional ones.
secondaryActions
readonly (MenuItem | MenuItem)[] List of secondary actions.
toggleItemLabel
TranslatableString $localize`:@@SI_CONTENT_ACTION_BAR.TOGGLE:Show actions` Toggle icon aria-label, required for a11y
viewType
ViewType 'expanded' Selection of view type as 'collapsible', 'expanded' or 'mobile'.

Types Documentation

Represents a translatable string. This can either be a translation key, e.g. ACTIONS.EDIT that will be automatically translated when displayed on the UI or a pre-translated string, e.g. Edit . Equivalent to a normal string in usage and functionality.
("collapsible" | "expanded" | "mobile")
Properties
Action that called when the item is triggered. A function will be called, a string will be dispatched to the SiMenuActionService .
action: (string | (actionParam: any, source: this) => void)
Badge that is rendered after the label.
badge?: (string | number) from badge
Color of the badge (not iconBadge).
badgeColor?: string from badgeColor
Whether the menu item id disabled.
disabled?: boolean from disabled
Optional icon that will be rendered before the label.
icon?: string from icon
Badge (always red) that is attached to the icon. If value===true, an empty red dot will be rendered.
iconBadge?: (string | number | boolean) from iconBadge
ID that will be attached to the DOM node.
id?: string from id
Label that is shown to the user.
label: TranslatableString from label
type: "action"
Properties
Action that called when the item is triggered. A function will be called, a string will be dispatched to the SiMenuActionService .
action: (string | (actionParam: any, source: this) => void)
Badge that is rendered after the label.
badge?: (string | number) from badge
Color of the badge (not iconBadge).
badgeColor?: string from badgeColor
Whether the checkbox is checked.
checked: boolean
Whether the menu item id disabled.
disabled?: boolean from disabled
Optional icon that will be rendered before the label.
icon?: string from icon
Badge (always red) that is attached to the icon. If value===true, an empty red dot will be rendered.
iconBadge?: (string | number | boolean) from iconBadge
ID that will be attached to the DOM node.
id?: string from id
Label that is shown to the user.
label: TranslatableString from label
type: "checkbox"
Properties
Badge that is rendered after the label.
badge?: (string | number) from badge
Color of the badge (not iconBadge).
badgeColor?: string from badgeColor
Submenu items for this menu item.
children: MenuItem[]
Whether the menu item id disabled.
disabled?: boolean from disabled
Optional icon that will be rendered before the label.
icon?: string from icon
Badge (always red) that is attached to the icon. If value===true, an empty red dot will be rendered.
iconBadge?: (string | number | boolean) from iconBadge
ID that will be attached to the DOM node.
id?: string from id
Label that is shown to the user.
label: TranslatableString from label
type: "group"
Properties
Items that are part of the radio group.
children: [ MenuItemHeader, ...(MenuItemRadio | MenuItemHeader | MenuDivider)[] ]
type: "radio-group"
Properties
Action that called when the item is triggered. A function will be called, a string will be dispatched to the SiMenuActionService .
action: (string | (actionParam: any, source: this) => void)
Badge that is rendered after the label.
badge?: (string | number) from badge
Color of the badge (not iconBadge).
badgeColor?: string from badgeColor
Whether the radio is checked.
checked: boolean
Whether the menu item id disabled.
disabled?: boolean from disabled
Optional icon that will be rendered before the label.
icon?: string from icon
Badge (always red) that is attached to the icon. If value===true, an empty red dot will be rendered.
iconBadge?: (string | number | boolean) from iconBadge
ID that will be attached to the DOM node.
id?: string from id
Label that is shown to the user.
label: TranslatableString from label
type: "radio"
Properties
The label of the header.
label: string
type: "header"
Properties
type: "divider"
Properties
Badge that is rendered after the label.
badge?: (string | number)
Color of the badge (not iconBadge).
badgeColor?: string
Whether the menu item id disabled.
disabled?: boolean
Optional icon that will be rendered before the label.
icon?: string
Badge (always red) that is attached to the icon. If value===true, an empty red dot will be rendered.
iconBadge?: (string | number | boolean)
ID that will be attached to the DOM node.
id?: string
Label that is shown to the user.
label: TranslatableString
Implement and provide this to an SiMenuFactoryComponent to receive trigger events.
Constructor
() => {}
Methods
Will be called by SiMenuFactoryComponent if an action is defined with a string instead of a function.
Parameters
item: (MenuItemAction | MenuItemCheckbox | MenuItemRadio)
actionParam?: any
Used in events emitted from SiLinkActionService
Properties
param: any
Constructor
() => {}
Properties
Parameter passed to triggered menu item actions.
actionParam: InputSignal<unknown> = ...
Menu items to render. Supports legacy and current menu item models.
items: InputSignal<(readonly (MenuItem | MenuItem)[] | undefined)> = ...
linkActionService: (SiLinkActionService | null) = ...
menuActionService: (SiMenuActionService | null) = ...
Methods
Parameters
item: (MenuItem | MenuItem)
(item: (MenuItem | MenuItem)) => item is MenuItem
Parameters
item: (MenuItem | MenuItem)
Parameters
item: MenuItem
Parameters
item: (MenuItemAction | MenuItemCheckbox | MenuItemRadio)
(index: number, item: (MenuItem | MenuItem)) => (string | number)
Parameters
index: number
item: (MenuItem | MenuItem)
Constructor
() => {}
Properties
Observable which emits the link and param to run the action on.
action$: Observable<LinkAction> = this.actionSubject.asObservable()
actionSubject: Subject<LinkAction> = ...
Methods
(link: Link, param: any) => void
Emit a new link and param pair to run the action on.
Parameters
param: any

Except where otherwise noted, content on this site is licensed under MIT License.