Description
The Application toolbar, or app bar, is found at the topmost area of an application page below the shell bar. As the most important design element in the app screen, it provides visual structure in a familiar form factor, help users understand how to interact with that app, and provides access to important actions in a predictable way.
Usage
Use the Application toolbar for file or document-based tools and apps. Or as an alternative to Fiori's Header Toolbar. That's because the app bar uses a classic File, Edit, and View configuration; whereas Fiori's header toolbar has a different structure not necessarily dependent on file creation.
- …You are dealing with the creation, editing, or management of a file, document, object or equivalent artifact.
- …You have a large group of commands and features that exceed the capacity of Fiori Header toolbar.
- …Your app doesn’t have enough commands to at least need the File, Edit, and View menus. Use Fiori’s Header toolbar instead.
Anatomy
- Menu Bar, required; 3 or more menus
- Toolbar, optional; used for important actions that need to stand out from the Menu bar
- Separator, required; separates the Menu bar from the toolbar. Additional separators are optional.
Menu Bar
The Menu bar is a group of menus (sap.m.MenuButton) offering a list of actions, commands, tools, and features a user can choose from at any time. In addition to the required menus, the Menu bar may also contain optional menus, including custom-made app-specific menus.
To learn more about what goes inside each menu, please see Menu Bar Organization section of this article.
Toolbar
The Toolbar contains actions divided into two groups: on the left, actions called out from the Menu bar, and on the right, important page-level actions – use of either or both is optional. The following list contains all controls approved for the app bar:
- Button (sap.m.Button)
- Segmented button (sap.m.SegmentedButton)
- Toggle button (sap.m.ToggleButton)
- Menu button (sap.m.MenuButton)
- Search field (sap.m.SearchField)
- Select (sap.m.Select)
- Switch (sap.m.Switch)
To learn about toolbar organization, please refer to the Toolbar Organization section in this article.
Menu Bar Organization
Below is a list of the most common menus in the application toolbar and their corresponding items in their suggested order. Additional items may be placed inside any menu whenever it matches its criteria. If a new menu is needed, then please see tips on how to make a at the end of this section
File Menu
The File Menu shows all actions for handling the file or document currently in session. This includes all high-level actions that treat the file itself as an object, such as saving, renaming, sharing, or exporting it. It also contains properties, preferences, and configurations that perform document setup functions.
Non-file or document-based apps can rename this menu when needed, such as the SAC Calendar app, which doesn’t create any document files but needs some of the items typically found in the File menu. So instead, it calls this menu ‘General’.
The File menu occupies the in the menu bar, and contains the items below, if applicable, arranged by importance according to the workflow. Additional items may be added whenever they fit this criteria.
Edit Menu
The Edit menu allow users to make changes and handle the content data of the file in session. This often refers to the data input by the user, whether that is text, image, video, or types of user input such as those in the Insert menu. Many of the Edit menu’s commands are related to the user’s clipboard, such as cut, copy, and paste. Undo and redo are also found in this menu because they relate to the actions found in the Edit menu.
In some cases, the Edit menu may also contain additional commands such as Find, Find & Replace, Transform Text (uppercase, lowercase, etc.), Emoji & Symbols (for special characters or glyphs), and other formatting options if a more appropriate menu (such as an app-specific Text or Format menu) is not in use.
The Edit menu occupies the in the menu bar, and contains the items below, if applicable, arranged by importance according to the workflow. Additional items may be added whenever they fit this criteria.
View Menu
The View menu controls what users see on display and allows them to customize its appearance, including any and items turned on or off by default. Use the View menu for toggling components on or off from View, triggering different view modes, and changing zoom or different magnifying levels of the content or screen.
The View menu occupies the in the menu bar, and contains the items below, if applicable, arranged by importance according to the workflow. Additional items may be added whenever they fit this criteria.
For information on how to toggle menu items from view, such as in Show and Hide scenarios, please see section in Behaviors and Interactions below.
Using the View menu to show and hide components
Insert Menu
The Insert menu is used for adding or creating items to the file in session. This includes any object, element, widget, or entity that make up the file. As such, the items in this menu will depend on the workflow it's meant to support.
Because the name/label of the menu already suggests the action of inserting / adding / creating, there is no need for an additional verb next to the item that will be added. For example, use the label ‘Chart’ instead of ‘Add Chart’.
Use of the Insert menu is optional; however, if using the Insert menu, it occupies the in the menu bar. Examples of items in the Insert menu include the items below arranged by priority according to the workflow.
Data Menu
The Data menu is used for managing all functions, commands, and attributes related to the data feeding into the file, whether that has a material representation on screen or is a connected source behind the scenes.
If a table floorplan is being used, the Data menu may also support table functions such as sorting or showing/hiding columns. However, consider in such cases whether an app-specific menu might be more suitable to house all table-specific actions. If a table component is being used instead, then table specific commands should appear in the table’s own toolbar, not in the Data menu.
Use of the Data menu is optional; however, if using the Data menu, it occupies the in the menu bar. Examples of items included in the Data menu include the items below arranged by priority according to the workflow.
Tools Menu
The Tools menu includes a list of all additional utility commands or actions that don’t have a more appropriate menu for them. This usually includes tools that require another component to carry out the desired function, such as a dialog box or a task panel.
Use of the Tools menu is optional; however, if using the Tools menu, it occupies the in the menu bar.
When designing a Tools menu, keep the following items in mind:
- The name of a Tool should be clear and simple using as few words as possible. One or two-word labels are best: a verb (the action) followed by a noun (the subject matter). If the label of the tool is longer than this, then it is an indication that the tool might not be simple enough or is too specific.
- Always use an ellipsis to indicate when menu items require additional user input beyond the tools menu, such as in a Dialog box or a Task panel. This familiar pattern is an established industry standard.
- Anything can be a tool, but it doesn’t need to go in the Tools menu if a more appropriate menu for it already exists. In some cases, and especially when a tool has more than one single function, the same tool may be referenced in a different menu and the Tools menu at the same time. This essentially creates different but valid entry points to the same tool. In these situations, maintain continuity by persisting previously made selections and configurations so users understand they are looking at the same tool again.
Custom Menus
Additional menus, unique to individual apps, may be added to the Menu bar when needed. Sometimes, app-specific menus are a result of breaking up other required or optional menus when those run too long. For example, adding all table actions under a custom made menu instead of cluttering the menu.
All custom app-specific menus should be placed after the Tools menu and arranged by order of most important. When introducing them to the App Bar, consider the following:
- Coordinate menus with user tasks
Pay special attention to the order of menus and the items within them, as their order and position is usually a clue of how to approach the sequence of a workflow, especially when a user is encountering it for the first time. Place the most important items, or group of items, closer to the top of the menu. - Use intuitive labels
Understand that menus are not the place to get creative with made-up words or internal jargon. Instead, figure out what users are looking for and stick to familiar or expected terminology expected by them. Ideally, an app-specific menu should speak for itself.
Use of any custom app-specific menu is purely optional; however, if using any, they should be listed in the and beyond.
Toolbar Organization
Called-out Actions
The left side of the Toolbar is reserved for actions from the Menu bar that need to be called out for a some reason. There are many benefits that come from calling out an action, such as making them more accessible, more visible, for highlighting key functionality, and for making the workflow more focused. But this means that actions that are called out will have two access points in the App Toolbar: one in the Menu bar and one in the Toolbar.
Think carefully what actions need to be called out. Consider that when the App toolbar is expanded (see Behaviours and Interactions), these actions will no longer be in the spotlight and will only be found inside their respective menus. Not every actions needs to be called out, and calling out actions at all is purely optional. But when doing so, follow the criteria below:
- Actions that need to be accessed repeatedly. For example, Undo and Redo.
- Actions that manipulate the content on display but not the UI layout, such as Search, Sort, and Filter.
- Actions that are part of a general framework instead of a specific workflow, such as Flag, Favourite, Bookmark, Share, Export, etc.
Before calling out actions in the Toolbar, check out the Menu Organization section above and see what menu it belongs to, or where similar actions can be found. Ask if calling these out and adding a second access point is justified. Remember that the goal is not to simply decorate the App toolbar with Buttons simply because the space is available, but actually, to stay organized and focused.
Called-out actions appearing in their respective menus when the App Toolbar is expanded
Page Actions
Page actions are high-level actions that impact the entire page. They reflect the user’s goals, priorities, and other important high-level actions. In that sense, they are kind of like the actions found in a Footer bar. But the difference is that page actions on the App toolbar act on the page, while page actions on the Footer bar transition of the page and provide cancelling actions.
- Trigger changes of state at the page level. Example: changing a Story from View to Edit, or, entering and exiting a Preview or Fullscreen mode.
- Execute a high-stakes function while staying in-place. Example: running an Analytic Application or Smart Discovery, playing a Digital Boardroom presentation and/or accessing the agenda, and Validating the object’s connected data source(s) in data-related apps.
- Exit the current context. Example: The Exit button in the OEM query builder or Search to Insights.
Page actions can also reflect generic actions closely tied to actions from the Menu bar, but that are the focus of the workflow. For example, if the page workflow is about creating and publishing an object, the page action could be . In that scenario, it wouldn’t be wrong to have Publish appear both in the File menu and in the Toolbar. This adds emphasis on the end goal and gives the user a sense of direction. The same is true for other generic actions like Save, Share, or Export.
Page actions appear in the far right-side of the toolbar, and should be enabled throughout the user's workflow. If there are no suitable page-level actions, this section of the toolbar may be left blank.
Toolbar Button Styles
Within the toolbar, certain actions are more important than others. Different button styles are designed to give appropriate feedback to users. Don’t use them on a whim or for decorative purposes. Ensure the focus is on the right actions by using the most suitable style for the action and arrange them by order of most important.
- Research has shown that people cannot remember the meaning of more than a small number of icons. More often than not, users remember the location of actions in the UI instead of the meaning or recognition of icons. When in doubt, the best icon is a text label.
- Remember that some buttons that present as icon buttons in some contexts are more suitable as text buttons in others. For page actions, always use text buttons.
- Don't assume users need to see a hard-to-recognize icon button many times before they learn the meaning behind it. It is better to use a text button for any key, unique, or infrequently used action from the get-go than to punish users into relying on memory, repetition, or glyph recognition alone.
For more information on action and button types, please refer to Action Placement in Fiori guidelines or SAP’s UX Consistency Standards (UXC-014).
Behaviours & Interactions
Expand Application Bar
The App toolbar may expand to display as the classic Toolbar. The action for this transition should be placed in the View menu as “Show/Hide Toolbar.” It is recommended the application bar is collapsed by default.
When this transition happens, menus should retain their placement and position, but their individual tools may be reordered if needed to ensure the more important tools are not hidden under an overflow menu.
Show / Hide toolbar is placed under the View menu
Overflow Behaviour
Ensure some level of responsiveness by using overflow with intention. Overflow should be activated either when there is not enough space for all actions, or if some actions are less important than others.
All buttons go into the overflow from right to the left. This ensures that the most important buttons are the last to be moved into the overflow menu. The separator line (sap.m.ToolbarSeparator) can also go into the overflow, changing from a vertical line into a horizontal line in the menu. If the control happens to be the first or the last item of the overflow area, the separator shouldn’t be displayed.
Teams made up of designer and developer can decide together what to prioritize and which actions will go into overflow by applying one of five priority statuses below:
Toggling Menu Items
Toggle between two altering states in a menu can be challenging because the menu item itself may prove ambiguous to users. They may struggle to understand the current state of the menu, and what effect will be triggered when clicking on an item.
Since not all toggling menu item styles work for all situations, consider the styles below. Different styles may be combined in one single menu if needed (for example, the menu and submenu use different toggling actions).
Menu with dynamic labels
Dynamically changing labels simultaneously represent the action that will take effect on click, and the current state of the UI. For example, Show Toolbar becomes Hide Toolbar when the toolbar is on display. This style is compatible with icons and larger menus.
- Use it to show and hide components from display.
Menu with checkmarks
Checkmarks are used to suggest the checked item is currently taking effect on the screen or selection. This style is not compatible with menu items that contain icons of their own, as this makes it harder to quickly scan the menu and understand which item is currently in effect.
- Use it to apply effects, select filter or sorting category, and show/hide.
Menu with opposing toggles
Sometimes the best way to make sure opposing actions are totally unambiguous is by providing an individual menu action for each one. This style is most compatible with shorter menus or shorter menu groups, as it can easily double up the count of menu items.
- Use it for actions that directly oppose each other but don’t work in the previous styles.
Native Component Behaviours
The App toolbar should be made up of existing and approved Fiori components. As such, honour the native behaviours and interactions of these components and avoid adding customized ones. Consider how the learnability of the App toolbar depends on it consistently behaving in the same way across all different apps that support it.
Buttons in all its variations, Dropdowns, Search and Input fields, Switches, Checkboxes and Radio buttons should have the same behaviours that they would have if they were placed in a different component.
When a menu is opened, it should remain open until a menu item is selected; or, until the user clicks outside the menu, clicks on a different menu, switches to another app, or until system message is displayed in a message box.
Best Practices
Keep it neat and tidy
Keep the Application bar neatly organized in a logical way. Ensure the proper method of user input (UI control) and the right button style is selected for the right type of action.
Remember that the larger a menu becomes, the more daunting and intimidating it appears to the user. To organize a menu, place the most important actions at the top, visibly group related items by using separator lines, reduce the number of icons where possible, and use simple and intuitive menu labels. If displaying keyboard shortcuts, ensure those are aligned on the right side of the menu.
Use sub menus responsibly
Where it makes sense to do so, consolidate related items under sub menus with a unifying theme or idea. Sub menus should be used instead of creating sub sections or indenting menu items. A proper sub menu should have anywhere between 6 to 8 items; if additional ones are required, consider placing them under a custom app-specific menu instead.
A good indication of needing a sub menu is when a term is used more than twice in a menu. For example, instead of individual menu items for Sort by Name, Sort by Date, Sort by Type, use a Sort By menu item with a sub menu for nested options for Date, Name, and Type.
To indicate a sub menu, use a right-pointed arrow icon, and open the sub menu automatically on hover of the entire parent menu item. Keep sub menus enabled always, even if their nested items are disabled. Avoid adding more than sub level, as this buries functionality and makes it cumbersome to find again.
Be smart about disabling content
It is important users can browse the contents of an application bar and learn the placement of actions, even if those actions cannot be triggered at that very moment. But avoid situations where the application bar will have all of its items always disabled. Essentially...
- Enable all items in a global toolbar as much as possible, even if you have to use a toast message to communicate the action cannot be performed until the right condition is met.
- Disable items currently unavailable but will be made available later.
- Remove all items from workspaces, page modes, or user types that will never make use of them.
All the actions of the Edit menu are disabled because there is no page data to act on. But instead of hiding the menu altogether, it remains disabled until something is added to the canvas, and their effect become relevant.
Provide accelerators, improve efficiency
Keyboard shortcuts are used regularly by advanced users, and provide another level of accessibility support. But they should not be used carelessly.
Keyboard shortcuts need to be easy to learn and memorize and applied to functions that are repeatedly used for them to be effective accelerators. Follow a standard format for shortcuts and try to match the name of the function and their shortcut button whenever possible.
Don’t forget the ellipsis
Use an ellipsis (…) next to menu items that will trigger another component, such as opening a dialog box or task panel, for additional user input. This industry-standard convention signals to the user that the menu item itself will require additional user input outside of the menu before completing the selected action.
Specifications
Application Bar
The default and collapsed form of the Application toolbar
Expanded Application Toolbar
The classic toolbar becomes the expanded version of the Application toolbar and is accessed from the View menu.
Links & Resources
- Fiori Guidelines: Fiori Toolbar Overview
- Core Visual Design Specs: Toolbar
- Fiori Guidelines: none currently
- Core Visual Design Specs: Menu (Fiori3)
- DemoKit Sample: Menu
- API Reference: sap.m.Menu
Support
If you have any questions or feedback about this page, please contact our team. For further information and questions in regards to the Design System, please visit the DNA Design SharePoint.