Document Scanner

The document scanner leverages Apple’s VisionKit, allowing users to digitize physical documents with an on-device flow. Users can select automatic or manual capture and easily edit, retake, or delete specific or all scanned documents.

Document scanner examples
Document scanner examples

Anatomy

A. Camera View

The camera view enables users to focus on and capture their scan through either manual or auto mode. The shutter button allows users to manually capture their scans regardless of the enabled mode. Users can use the phone’s flash to improve the lighting environment during scans or select certain filters to further alter the scanned document. On the bottom left corner, users can see a preview of their scanned documents, which also acts as an entry point for the gallery/edit flow. In the bottom right corner, users can finish and save their scanned documents by tapping on the “Save” button with the number of scans indicated.

B. Gallery/Edit View

The gallery view provides a view of all the user’s captured scans in that current session, and enables users to adjust, filter, rotate, retake, and delete their scans. Once the user feels their scans are sufficient, the “Done” button brings the user back to the camera view for final save.

Document scanner anatomy
Document scanner anatomy

Behavior and Interaction

Automatic Capture

Opening the document scanner defaults to the auto-capture mode and prompts the user to position the document within the frame. As soon as a potential document is detected, a blue outline appears, instructing the user to hold the camera steady as the document is being scanned. Once the document is captured, the scanned document is shown on the bottom left scanned documents preview.

Automatic capture scan view
Automatic capture scan view

Manual Capture

Users can switch to manual capture mode by tapping on the “Manual” button located on the top right corner. In manual mode, the user is prompted to position the document within the camera’s view. Once a potential document is detected, a blue outline is overlayed over the targeted document, and the user can tap on the shutter button to capture the scan.

Manual capture scan view
Manual capture scan view

Scan Confirmation

After capturing, users have the opportunity to adjust the scan. Once satisfied, they can either save the scan or retake it if needed.

Confirming or retaking a scan
Confirming or retaking a scan

Preview Scans

Users can preview and edit their scanned documents by tapping on the bottom-left scan thumbnail.

Previewing scanned documents
Previewing scanned documents

Adjust Scan

The “Adjust scan” feature allows users to adjust or crop imperfect scans. Users can adjust the selected scan by dragging the corners of the overlay to their desired positions. Once satisfied, they can finish by tapping on “Done“ on the bottom right or cancel the entire adjustment if needed.

Adjusting a scanned document
Adjusting a scanned document

Filter

The filter feature in the iOS document scanner enhances scanned documents by applying visual adjustments to improve their readability and appearance.

The four filter options:

  • Color: Retains the original colors of the document.
  • Grayscale: Converts the document to shades of gray for a cleaner, professional look.
  • Black & White: Optimizes contrast by removing all colors, making text sharper and more distinct, especially for text-heavy documents.
  • Photo: Preserves the details and colors of images for a more natural appearance.
Applying filters to a scanned document
Applying filters to a scanned document

Rotate

The “Rotate” feature allows users to adjust the orientation of a scanned document by rotating it in 90-degree increments. This ensures that the document appears correctly aligned for viewing, sharing, or printing, especially if it was scanned at an angle or upside down.

Rotating a scanned document
Rotating a scanned document

Delete

Users can delete the selected scan from the overall collection of scans from the session by tapping on the trashcan icon.

Deleting a scanned document
Deleting a scanned document

Retake

Users can retake the selected scan by tapping on the retake button on the top right-hand corner, performing this action takes the user back to the scanning camera view.

Retaking a scanned document
Retaking a scanned document

Resources

SAP Fiori for Android: Document Scanner

Empty State View

When mobile applications do not have access to or can not show data, an Empty State View can be used as a fallback to provide users with messaging about what has happened and what to do next. They can appear in, but are not limited to, cards or page types such as chart cards, chart floor plans, and chart headers.

Empty state view examples
Empty state view examples

Anatomy

A. Illustration (Optional)

This section can display a custom illustration or an illustration provided by Fiori Moments.

B. Title

The title explains the reason for the empty state, preferably in a single line.

C. Description

For charts, a description can be used only in full-screen mode.

Empty state view anatomy
Empty state view anatomy

Resources

SAP Fiori for Web: Designing for Empty States, Illustrated Message

Related Components/Patterns: Banners, Inline Errors

Skeleton Loading

Skeleton loading is a progress indicator that is used when a screen or part of a screen is loading. It is best used when the structure and layout of a container are known, such as a page or card, and the system requires time to fetch and display the actual data.

Skeleton loading of basic placeholders (left), cards (middle), and page (right)
Skeleton loading of basic placeholders (left), cards (middle), and page (right)

Usage

Do
  • Only use when the target structure and layout are known. 
  • Use when the loading time exceeds 1 second. 
  • Use generic cell or card placeholders or build customized placeholders with basic placeholders if needed. 
  • Provide users with feedback when the loading time is longer than expected or when data retrieval fails.
Don't
  • Don’t use placeholder types that don’t match the target type. 
  • Don’t get too detailed with customized placeholders, as it can distract the user. 
  • Don’t combine multiple types of progress indicators with skeleton loading.

Anatomy

A. Placeholder

The placeholder is used to replace the actual content during skeleton loading. Ideally, the placeholder should correspond to the content in terms of type, layout, and size. If specific details can’t be defined, make sure the type of placeholder aligns with the content.

B. Container

All cells, cards, or page placeholders should stay within a container. The container has fixed lines, paddings, and margins, so there may be variations in size between the placeholder container and the actual content container.

Skeleton loading anatomy
Skeleton loading anatomy

Behavior and Interaction

Transition

Skeleton loading is best used for loading time that exceeds 1 second. It automatically transitions to the actual content once the data fetching process is complete.

Skeleton loading transition animation
Skeleton loading transition animation

Shimmer Effect

By default, skeleton loading includes a shimmer effect animation, which consists of a black shimmer with 8% opacity that moves from left to right in a continuous loop.

Skeleton loading shimmer effects animation keyframes
Skeleton loading shimmer effects animation keyframes

Adaptive Design

The skeleton loading feature aligns with the original component layouts of the iOS size classes (compact and regular) and therefore adapts to any iPhone or iPad device and their respective containers.

Skeleton loading compact page example (left) and regular page example (right)
Skeleton loading compact page example (left) and regular page example (right)

Variations

Basic Placeholders

Basic placeholders are the fundamental of skeleton loading. They can also be used to build customized placeholders.

Text Placeholders 

There are five height options for text placeholders with adjustable width. We recommend using these options instead of the following font sizes: 

  • Foot note, Caption 1, Caption 2: 13pt
  • Subhead, Callout, Body, Headline, Title 3: 20pt
  • Title 2, Title 1: 28pt
  • Large Title, Medium KPI: 41pt
  • Large KPI: 57pt 

Please refer to Typography to learn more about font sizes.

Image Placeholders 

The image placeholder offers various size options. The icon is optional and can be changed to any icon according to Iconography.

Avatar Placeholders 

The avatar placeholder comes with multiple fixed size options, and can be used to replace avatars or KPI progress charts.

Button Placeholders 

Button placeholders can be used to replace label buttons, symbol buttons, filter buttons, or tags.

Object Cell Placeholders 

Object cell placeholders can be used to replace one-line or multi-line object cells.

Basic placeholders (text, avatar, image, button, object cell)
Basic placeholders (text, avatar, image, button, object cell)

Card Placeholders

Card placeholders are used for skeleton loading at card level, such as one-line and multi-line object card, analytic data table card, list card. If the card type can’t be defined, use the generic card placeholder.

One-line and multi-line object card, analytic data table card, generic card (left) and list card placeholders (right)
One-line and multi-line object card, analytic data table card, generic card (left) and list card placeholders (right)

Header Placeholders

Header placeholders are used to replace headers on a screen during skeleton loading, such as the object header.

Object header placeholder for compact (top) and regular screens (bottom)
Object header placeholder for compact (top) and regular screens (bottom)

Resources

SAP Fiori for Android: Skeleton Loading

SAP Fiori for Web: Placeholder Loading 

Related Components/Patterns: Buttons, Object Cell, Object Card, Analytic Data Table Card, List Card

Illustrated Message

The illustrated message communicates empty, error, and success states through a combination of solution-oriented messages, engaging illustrations, and a conversational tone. The illustrated message turns a situation, even a negative one, into a better experience for your users while ensuring consistency. 

General empty, error, and success state examples
General empty, error, and success state examples

Usage

Use the illustrated message when you want to improve the user experience for one or more message states in your application. The illustrated message’s content should be concise but prioritize clear messaging. 

Turn a negative event into a positive one 

  • Take time to design and write a solution-oriented message. Be precise in your wording and use appropriate illustrations. 
  • Ideally, a negative event in a software product doesn’t generate negative emotions. A well-designed illustrated message that leaves users feeling understood and valued can result in a neutral or even positive feeling. Remember that users will benefit from thoughtfully crafted illustrated messages every time they encounter them – perhaps even daily. 
An illustrated message that has positive messaging and cohesive imagery
An illustrated message that has positive messaging and cohesive imagery
An illustrated message that has a problem-oriented message and displays an icon rather than an illustration
An illustrated message that has a problem-oriented message and displays an icon rather than an illustration

Always write a coherent, solution-oriented message 

Make sure that the illustration, message, and call to action work together as one to clarify the situation. Always provide a message. Never use an illustration without a message. A message combined with an illustration is more powerful than a message alone. 

An illustrated message that has solution-oriented messaging with a related illustration and call to action 

An illustrated message that has solution-oriented messaging with a related illustration and call to action 

An illustrated message without the message and an illustration unrelated to the call to action
An illustrated message without the message and an illustration unrelated to the call to action

Tailor your message to your use case 

  • Always ensure that the default text fits in the context. If not, replace it or make it more precise.

    Example:
    Default text: No results found / Try changing your search criteria.
    Adapted text (supplier table used with a filter bar): No suppliers found / Try adjusting your filter settings.
  • Recommended: Replace generic terms such as “data” and “object” with your specific business object.

    Example:
    Default text: There’s no data yet / When there is you’ll see it here.
    Adapted text: There are no orders yet / When there are, you’ll see them here. 
An illustrated message that has enhanced the message to utilize use case-specific terms
An illustrated message that has enhanced the message to utilize use case-specific terms
An illustrated message displaying a general message without contextual information
An illustrated message displaying a general message without contextual information

Use the illustrated message to communicate high-priority information

Place the illustrated message in dialogs, cards, and at a page level rather than a snackbar or a banner to indicate high-priority empty, error, and success states.

An illustrated message placed in a full-screen page
An illustrated message placed in a full-screen page
An illustrated message placed in a banner
An illustrated message placed in a banner

Prioritize the message over the illustration

When the illustrated message is placed in a container that does not fit all the elements, we recommend removing the illustration so that the user can read the entire message.

An illustrated message that prioritizes the content over the illustration so the most important information can fit in the container
An illustrated message that prioritizes the content over the illustration so the most important information can fit in the container
An illustrated message including all elements that do not fit within the container’s available space
An illustrated message including all elements that do not fit within the container’s available space

Anatomy

A. Illustration (Optional)

The illustration helps clarify the situation and add personality. The illustration should be appropriate for the use case and the container being used (such as a dialog or card), and that similar use cases are handled consistently.  
 
This section can display an illustration from an app-specific library, or an one provided by the core design team’s illustration library.  

B. Title

The title explains the reason for the specific state, preferably in a single line. Use the title to convey the essence of your message in simple language. We recommend writing the title in sentence case. 
 
If you are using one of the standard use cases, you can refine the default text and customize it to the precise use case. 

C. Description (Optional)

The description adds details and prompts the user what to do next, preferably in two sentences or less. Like the title, the description’s default text can also be customized to fit a specific use case. 

C. Call to action (Optional)

If there are clear next steps for the user to take, there are a maximum of two call-to-action buttons that can be used.

Empty state view anatomy
Empty state view anatomy

Adaptive Design 

Illustration Sizes

We recommended using the following fixed mobile illustration sizes for the following containers:

 

A. Size XL (320×240)

Full-screen page, full-screen dialog

B. Size L (160×160)

Page section, larger dialogs, large cards (2×3, 2×2)

C. Size M (92×92)

Page section, smaller dialogs, medium card (2×1)

D. Size S (64×64)

Smaller dialogs, small card (1×1)

E. Size XS (48×48)

Smaller dialogs, small card (1×1)

Illustration set with all five illustration sizes
Illustration set with all five illustration sizes

Message Width Adaptiveness

Depending on the container in which the illustrated message is placed, the message content can stretch to fill the maximum width of the container. Alternatively, the message container can be set to a fixed width to maintain cohesiveness between a set of illustrated messages.

An illustrated message description with a fixed width (left) and a description that stretches to fill the available space (right)
An illustrated message description with a fixed width (left) and a description that stretches to fill the available space (right)

Call-to-Action Adaptiveness

The call-to-action buttons can fill the whole container or can be aligned left, right, center, or fill the available container space. When using two actions in the illustrated message, the buttons can be stacked in a vertical layout or be placed next to each other in a horizontal layout. If the buttons in a horizontal layout exceed the container’s maximum width, the container will responsively take on a vertical layout to provide ample space for the actions. 

Illustrated message example that shows buttons in a horizontal call-to-action layout (left) exceeding the container width and adapting to a vertical call-to-action layout (right)
Illustrated message example that shows buttons in a horizontal call-to-action layout (left) exceeding the container width and adapting to a vertical call-to-action layout (right)

Variations

Empty State 

An empty state is a moment in the user experience when there is no content to display. Some common use cases include: 

  • Empty list, table, or inbox 
  • No notifications or planned activities 
  • Before search 
“No task” empty state example.
“No task” empty state example.

Error State 

An error state is caused by missing permissions, incorrect configuration, or a system issue. Some common use cases include: 

  • Unable to load, upload, or connect 
  • No search results found 
“Unable to load” error state example
“Unable to load” error state example

Success State 

A success state is when an action has been performed without errors or warnings, meaning that the user has achieved a certain task or milestone. Some common use cases include: 

  • Reaching a daily goal or target 
  • Completing a work task 
“Task complete” success state example.
“Task complete” success state example.

Custom States

The illustrated message component was designed to be flexible enough to handle custom use cases. Along with altering the actual text content (title, description, or call-to-action label), you can also use your own custom illustrations if they conform to the preset dimensions of the different available illustration/image sizes mentioned in the above adaptive design section.

Examples of illustrated messages with custom text content and an illustration that aligns with the set mobile illustration sizes.
Examples of illustrated messages with custom text content and an illustration that aligns with the set mobile illustration sizes.

Call-to-Action Variations

The call-to-action buttons can take on a variety of styles depending on the use case. While the button style is flexible, we recommend maintaining consistent button styling across the application.  

Example of illustrated messages with mixed button styling and call to action layout.
Example of illustrated messages with mixed button styling and call to action layout.

Resources

SAP Fiori for Android: Illustrated Message

SAP Fiori for Web: Designing for Empty States, Illustrated Message

Related Components/Patterns: Banners, Inline Errors

Modality

Modality is a method to present content in a temporary mode, generally through a modal sheet, form sheet or popover. With Adaptive Design, Modality on iPhone and iPad devices will adapt to the screen sizes and utilize the available space.

A modal is used for completing a task, updating content, or selecting filters. It helps the user to focus on the current task by providing relevant properties. The create and filter patterns are generally presented in modals. 

A modal typically slides up from the bottom of the screen and remains open until the user has taken an action to close it. Note that in edit mode, the modal has a Dissolve transition. To learn more about transitions, see Animation.

Compact

Full-Screen Modal

In compact width, a modal is presented as a full-screen window. To exit from a full-screen modal, the user must tap on one of the two action buttons placed in the navigation bar. The button on the left is generally a “Cancel” button, which abandons the current task. The button on the right is usually used to complete the task or save the user’s progress. We recommend using language that best describes the current action, for example, use “Create” or “Add” when the user is creating a task or adding a contact. Avoid using “Done” because it may sound vague to the user.

Create pattern (left) and filter pattern (right)
Create pattern (left) and filter pattern (right)

Regular

Form Sheets

In regular width, modals can be displayed as form sheets, appearing in the center of the screen with a semi-transparent overlay underneath. Form sheets are used to collect data from users. In this example, the form sheet is collecting information needed to create a follow-up job for the maintenance worker. Users should be able to complete the task without referring to extra information outside of the modal.

Tapping outside of the form sheet allows the user to exit the window. In this case, the task itself would not be completed, and any progress consequently would not be saved, that means it would function like tapping on a “Cancel” button. Once an exit action is triggered on a form sheet, the modal window slides downwards until it has completely exited the screen.

Form sheet in regular width
Form sheet in regular width

Popover

Popover is another type of modal used in regular width. It is often used when a user needs to complete a quick task or action, such as filtering a list. Tapping outside of the popover allows the user to dismiss the modal.

Popover in regular width
Popover in regular width

Full-Screen Modal

A full-screen modal can also be used in regular width. Readable width should be applied to components in a full screen modal as it may be difficult for the users to read across a wide screen. It is best used for tasks that are complex and require the user’s full attention.

Full screen modal in regular width
Full screen modal in regular width

Quick Sort

Quick sort is a contextual sort pattern that allows users to change the sort criteria of a component. It can be implemented on component level to allow sorting of list cards or preview table views. It can also be implemented in fullscreen view, for example, in list reports.

Quick sort as a menu on a list report (left) and as a submenu on a list card component (right)
Quick sort as a menu on a list report (left) and as a submenu on a list card component (right)

Usage

Do
  • Use quick sort for contextual fast sorting.
  • If sorting and filtering is needed, use the sort and filter form.
  • Keep the sort criteria in the menu as short as possible.
Don't

Filtering is not possible with quick sort.

Anatomy

A. Sort Icon

The “Sort” icon opens the quick sort menu.

B. Menu/Submenu

The menu/submenu contains sort options for the user.

C. Checkmark Icon

The checkmark only appears when a criterion is selected and active.

D. Sort Criteria

The sort criteria define the options available to the user to sort the component. Do not use more than five sort criteria to avoid scrolling in the menu.

E. Expand Submenu

This opens the submenu with the sort criteria.

F. Collapse Submenu

This closes the submenu with the sort criteria.

G. Submenu Title

By default, the title of the submenu is “Sort By”. The subtitle is the current selected sort criterion.

Quick sort menu anatomy
Quick sort menu anatomy
Quick sort submenu anatomy
Quick sort submenu anatomy

Behavior and Interaction

Quick Sort in a Menu

If a direct sort action is available, for example, in a navigation bar, a tap on the sort button opens the menu that shows the sort criteria. As soon as a user selects a sort criterion, the menu closes and the component gets sorted according to the new criterion. A toast message indicates that the sorting has changed to the new criterion.

The sort icon in the navigation bar (left) triggers the sort menu (middle), a new sort criterion is chosen and the list gets sorted. A toast message indicates completion (right)
The sort icon in the navigation bar (left) triggers the sort menu (middle), a new sort criterion is chosen and the list gets sorted. A toast message indicates completion (right)

Quick Sort in a Submenu

If the sort action is part of an overflow menu, a tap on the sort entry opens a submenu. Once a user has selected a sort criterion in the submenu, both menus close. The sorting of the component changes based on the selected criterion. A toast message indicates the new sorting.

The overflow icon in the card header (1) triggers the overflow menu (2), selecting the “Sort By” entry opens the submenu with the sort criteria. After selecting a new sort criterion(3), the list gets sorted and a toast message indicates completion (4)
The overflow icon in the card header (1) triggers the overflow menu (2), selecting the “Sort By” entry opens the submenu with the sort criteria. After selecting a new sort criterion(3), the list gets sorted and a toast message indicates completion (4)

Adaptive Design

On iPhone in compact width and on iPad in regular width, quick sort uses the default iOS menu and submenu.

Quick sort menu on iPhone (left) and iPad (right)
Quick sort menu on iPhone (left) and iPad (right)

Behavior of the Submenu

On iPhone, the submenu is opened on top of the menu. The menu entry that opens the submenu has a chevron on the left side. The chevron turns down in the submenu header. The header shows the same information as the menu entry, which opened the submenu.

Submenu behavior in compact width: menu (left) and submenu (right)
Submenu behavior in compact width: menu (left) and submenu (right)

On iPad, the submenu is opened next to the menu. The menu entry that opens the submenu shows a chevron on the right side. This indicates that the submenu is opened next to it. The submenu only shows the sort criteria. It does not have a header.

Submenu behavior in regular width
Submenu behavior in regular width

Variations

Quick Sort in a Menu

The quick sort in a menu allows users to access the quick sort criteria by tapping on an icon button, for example, in the navigation bar.

Quick sort criteria in a menu
Quick sort criteria in a menu

Quick Sort in a Submenu

If users need to take several actions within a component or fullscreen view, they can access the quick sort criteria in a submenu.

Quick sort criteria in a submenu
Quick sort criteria in a submenu

Resources

Human Interface Guidelines: Menu

Related Components/Patterns: Sort & Filter Form, Sort & Filter Overview

Sort & Filter Overview

The sort and filter pattern allows users to narrow down results from a set of data by setting sort and filter criteria.

Sort and Filter Patterns

Sort and Filter Form

The sort and filter form is used for advanced filtering. For compact layout, it opens in a fullscreen modal, where the sort and filter options can be set. The modal closes and shows the results once the user taps on the result button in the form.

For regular width layout (iPad), the sort and filter form opens in a popover. The popover closes and updates the results when tapping the results button. To learn more, see Sort and Filter Form.

Do
  • Use the sort and filter form for large complex filters with a lot of sort and filter options.
  • Use it if the amount of data is very large and advanced filtering is needed.
Don't

Don’t use the sort and filter form for contextual filtering, that is, when the user should be able to immediately view changes on the filtered data. Use the filter feedback bar instead.

Sort and filter form in compact width (left) and regular width (right)
Sort and filter form in compact width (left) and regular width (right)

Filter Feedback Bar

The filter feedback bar is used for contextual onscreen sorting & filtering that enables the user to maintain the context to the displayed results.
The filter feedback bar is a horizontal bar above a set of data. It allows the user to apply frequently used filters. It shows the filters that have been applied to the data. The user can set multiple filters at once, as the data below reacts immediately to the changes. To learn more, see Filter Feedback Bar.

Do
  • Use the feedback filter bar for contextual onscreen sorting and filtering.
  • Use it if there are frequently used filter options.
  • Use it when users need to interact with already applied filters.
Don't

Don’t use the filter feedback bar if lots of filters need to be applied to the data. Use the sort & filter form instead.

Filter feedback bar above a list report
Filter feedback bar above a list report

Quick Sort

Quick sort is used for contextual onscreen sorting. It can be implemented on component level to allow users to sorting list cards or to preview table views. It can also be implemented in full-screen view, for example, in list reports. Quick sort criteria are either shown in a menu or in a submenu as part of an overflow menu.  To learn more, see Quick Sort. 

Do

Use the quick sort pattern for contextual onscreen sorting.

Don't

Don’t use the quick sort pattern if filters need to be applied to the data. Use the sort & filter form or filter feedback bar instead. 

Image with quick sort
Image with quick sort

Resources

Development: Create and Filter Patterns

SAP Fiori for Android: Sort and Filter Pattern

Related Components/Patterns: Sort & Filter Form, Filter Feedback Bar, Quick Sort

Info View

The info view is generally used in onboarding scenarios. It provides the application with the ability to show customizable information in a transitionary state that locks regular navigation methods. This pattern is closely related to the What’s New component as well as the feedback screens used in multi-user onboarding.

Info view on compact (left) and regular (right)
Info view on compact (left) and regular (right)

Usage

Do
  • Use info view when you want the user to perform an action or remain in some sort of transitionary screen state.
  • Alter button styling if prioritization/hierarchy is required – no need to stick with default link/ghost buttons.
Don't
  • Don’t use Info view interchangeably with the What’s New component, if you just need to briefly/temporarily inform the user while still allowing them to navigate away or back then stick with What’s New.

Anatomy

A. Navigation Bar

A default contrast navigation bar without any actions— doesn’t use a stacked modal to highlight the difference between the What’s New component.

B. Title

Use a clear and concise title to provide users the information you are trying to communicate.

C. Description

Explain your information in a summarized form.

D. Progress Indicator

• Spinner: The spinner is used to show the progress of the state of the screen.
• 
Label: Optional, be concise when describing the action to be done – limit to three words.

E. Button Stack

Uses button form cells, the top button is designated as primary and the bottom as secondary.

 

Anatomy of the info view
Anatomy of the info view

Behavior and Interaction

Progress Indicator (Spinner)

This indicates that the state of the screen is in progress, the spinner continues to rotate until the system or application is ready to transition.

Action Buttons

The actions in the button stack are emphasized and should allow the user to navigate from or alter the application state.

Rotating progress indicator on the info view
Rotating progress indicator on the info view

Resources

Development: FUIInfoViewController

Related Components/Patterns: What’s New, Multi-User Onboarding

Sidebar

A sidebar provides app-level navigation and quick access to users’ favorite or pinned contents. The sidebar is useful if you expect a user to switch between app-level destinations frequently. This component is only available in regular width. If you need app-level navigation on compact width, use a tab bar instead.

Example of a sidebar in regular width
Example of a sidebar in regular width

Anatomy

The primary column contains the sidebar. The sidebar contains a header, a list, a footer, and a vertical divider.

A. Header

B. Destination List

C. Footer

D. Default Cell

E. Active Cell

F. Outlined Group

G. Vertical Divider

Primary Column

The width of the primary column is flexible. The default width is set to 320pt.

Destination List

  • Icon: Icons are optional. Icons supplement labels as indicators of a destination.
  • Label: Keep text labels concise. When a text label extends beyond the primary column width, truncate it, instead of shrinking or wrapping the text.
  • Right accessories: Right accessories are optional; numbers or any icon button can be added. Within an outlined group, don’t mix number and icon button or different icon buttons.

Outlined Group

Related destinations can be grouped together. Grouped items have a heading as a group name.

Sidebar anatomy
Sidebar anatomy

Behavior and Interaction

Selection

The current screen is selected and represented in an active state. When the app is first opened, the landing screen, Overview in this example, is an active state by default. Only one cell in the sidebar can be activated at a time.

Active work orders cell (left) and active assets cell (right)
Active work orders cell (left) and active assets cell (right)

Grouping

Destinations in the same category can be grouped together as an outlined group. An outlined group has a header and the list of destinations. The header contains the group name and the chevron. Tapping on a header opens or collapses the destination list below the header.

Collapsed group (left) and expanded group (right)
Collapsed group (left) and expanded group (right)

Collapsing and Opening

In landscape mode, the sidebar is visible by default. To create more room for their content, the sidebar can be collapsed by the toggle icon on the top left corner. The user can open the sidebar again by using the built-in edge swipe gesture.

In portrait mode, the sidebar is open by default as an overlay. The sidebar can be collapsed by tapping outside of view. The user can open the sidebar again by the built-in edge swipe gesture.

Collapsing and opening the sidebar
Collapsing and opening the sidebar

Scrolling

The sidebar is vertically scrollable, if the list of navigation destinations is longer than the height of the area between the header and the footer. When the user scrolls down, the sidebar title switches to collapsed mode and stays fixed.

Vertical scrolling within sidebar
Vertical scrolling within sidebar

Edit Mode

Users can make changes to the sidebar in edit mode by tapping on the “Edit” button. This allows them to hide or show list items by toggling the switches.

Sidebar in edit mode
Sidebar in edit mode

List items can be rearranged with the drag handles.

Rearranging list items in the sidebar
Rearranging list items in the sidebar

Resources

Development: FUISideBar

SAP Fiori for Android: Navigation Drawer

Human Interface Guidelines: Sidebars

Related Foundations: Adaptive Design, Navigation

AR Scanner

The AR scanner allows users to initiate augmented reality experiences, such as AR annotations, after locating a preset image anchor to be matched.

Examples of a coaching view (left), scanning view (middle) and matched scan view (right)
Examples of a coaching view (left), scanning view (middle) and matched scan view (right)

Anatomy

Coaching View

The coaching view is an overlay on top of the camera view ( or ‘world view’ in AR terms) that provides users with guidance on how the AR Scanner works.

A. Exit Button

Lets users exit from AR scanner and return to the previous application screen.

B. Image Anchor

Shows the user what image or object to look/scan for.

C. Instruction Text

Details steps that the user needs to take in order to complete the AR Scanner process and move to the main AR experience

D. Primary Button

The way for the user to start scan – after the first collapse of the coaching view in the AR session button text should change from ‘Begin Scan’ to ‘Return to Scan’.

Coaching view anatomy
Coaching view anatomy

Scanning View

E. Scan Guide & Crosshair

Allows the users to center/align the camera view target to be scanned and matched.

F. Image Anchor (Coaching View collapsed)

Shows the user a preview of what image or object to look for, is also tappable to open the coaching view again.

Scanning view anatomy
Scanning view anatomy

Matched Scan View

G. Matched Scan Indicator

This shows that the camera view target has been scanned and matched.

Matched scan view anatomy
Matched scan view anatomy

Behavior and Interaction

Coaching View Collapse

On the launch of an AR experience from the main application, the AR Scanner & world view are both initialized. The coaching view is shown as an overlay on top of the world view and allows the user to read instructions and see the anchor image.

Tapping on the ‘Begin Scan’ button begins the scanning as the entire coaching view overlay collapses into a minimized anchor image preview still allowing the user to have a visual reference for said anchor image.

Tapping on the collapsed or minimized coaching view/anchor image reference will expand the coaching view to full size again.

Scanning to Match

Once the scanning begins the user will look for the real representation of the anchor image in the world space and align said representation (an image or an object) with the scan guides and crosshairs.

When the image or object is recognized:

1. The scan guide and crosshair fade out

2. The Match Scan Indicator fade in anchored to said image or object in the world space.

3. After a couple of beats, the AR experience for example AR Annotations loads in.

Resources

SAP Fiori for Android: AR Scanner

Related Components/Patterns: AR Annotations, QR Code Scanner

AR Annotations

AR Annotations components are designed for exploring objects in a facility. They can be used to explore a warehouse, machinery, or a business object to enhance the user experience by leveraging augmented reality.

Examples of a scan screen (left), pulsing marker (middle) and selected marker (right)
Examples of a scan screen (left), pulsing marker (middle) and selected marker (right)

Anatomy

AR Scanner

To view annotations in the world view, the user can begin by scanning an image in a facility or an object using their phone. See AR Scanner for more details.

A. Coaching View

B. Scanning View

C. Matched Scan View

Coaching view (left), scanning view (middle) and matched scan view (right)
Coaching view (left), scanning view (middle) and matched scan view (right)

AR Marker

AR markers typically represent a business object in a facility. Each marker type has a default and selected state. A connector line to the AR card appears when the user taps on a marker with a pulse animation of the marker.

D. Default Marker

E. Marker Pulse

F. Marker Connector

Default marker (left) and pulsing marker with connector (right)
Default marker (left) and pulsing marker with connector (right)

AR Cards

When a user selects a marker, a card slides in from the left to reveal additional information. This card displays information about the selected business object. The AR card appears in the screen view. 

G. AR Card

Selected marker with AR card
Selected marker with AR card

Behavior and Interaction

The AR annotation flow consists of three main interactions. To understand each interaction in detail, see AR Scanner, AR Makers, and AR Cards.

Scanning

After an image is successfully scanned, AR makers appear in default state on the screen in the world view.

Markers

When a user taps on a marker, swipes cards, or taps on a card, the marker displays pulse animation with a connector connecting to the card.

Card Detail

Once the user selects a marker, the respective card slides in from the left to the focused state showing relevant information about the object. The user can tap on the card to view more detail about the content. The detail panel slides in from the bottom.

AR annotations flow with coaching, scanning and matched scan view
AR annotations flow with coaching, scanning and matched scan view

Resources

SAP Fiori for Android: AR Annotations

Related Components/Patterns: AR Cards, AR Markers, AR Scanners

Widgets

Widgets display key information in a glanceable format on a user’s device.

Small widgets on an iPhone (left), medium widget (middle), and large widget (right
Small widgets on an iPhone (left), medium widget (middle), and large widget (right

Usage

Do
  • Only use SAP icons and SDK components so that the widget looks consistent with the app.
  • For legibility, consider displaying widget content with a 16pt margin for texts and 8pt tight margins for images and glyphs.
  • Use SAP icons or SF symbols on the header instead of the app logo.
Don't
  • Don’t use the logo on the header. Instead, show the logo only if your app curates content.
  • Don’t forcefully repeat information or expand the widget’s content size to fill more space for medium or large widgets.

Anatomy

A. Header

The header of a widget consists of the following variants:

  • Left accessory (optional): icon
  • Main content: title, subtitle (optional)
  • Right accessory (optional): SAP logo, tag, counter
  • KPI
  • Image
  • Customized
  • Empty state
  • Authentication

B. Body

The body of a widget visualizes the main content through the use of the following components:

  • Table view
  • Chart card (line, bar, multi-bar)

C. Footer

The footer can be used to display the following:

  • Buttons (1 symbol, 1 label, 2 symbols, 2 labels)
  • Label

D. Background

The background has the following variants:

  • Default
  • Customized
  • Image

Anatomy of a widget
Anatomy of a widget

Variations

KPI View

KPI widgets use SAP BTP SDK for iOS KPI and KPI header components. They can be used to represent numerical values such as dates, amounts, etc.

KPI widgets
KPI widgets

 

Table View

Table view widgets use SAP BTP SDK for iOS object cell components. Table widgets can be used to display information with an object image, headline, and subtitle.

Table view widgets
Table view widgets

Chart View

Chart view widgets use SAP BTP SDK for iOS chart cards to display any graphical information. Use line and donut charts in the widgets to avoid overcrowding and allow users to get information at a glance.

Chart view widgets
Chart view widgets

Behavior & Interaction

Starting with iOS 17, iPadOS 17, or macOS 14, widgets can include buttons and toggles to offer specific app functionality without launching the app. For example, an approval widget allows users to approve a request with a button. On a locked device, buttons and toggles are inactive and the system doesn’t perform actions unless a user authenticates and unlocks their device.

Pressed State (Content)

Selecting a row or column in the widget changes the background color to give users immediate feedback on what exactly has been selected.

Pressed state on content
Pressed state on content

Pressed State (Button)

Selecting a button only changes the button’s state to pressed state.

Pressed state on a button
Pressed state on a button

Long Press State

Long press anywhere on a widget opens the native iOS contextual menu that enable users to edit or remove the widget.

Pressed state on a button
Pressed state on a button

Processing State

When a request is being processed after a user’s action, such as tapping on a button, the tapped button expands to the full width of the container, and shows a circular indicator in front of the button text. The text changes to present continuous tense followed by an ellipsis “…” to indicate the processing state.

Processing state in interactive widgets
Processing state in interactive widgets

Success State

The processing state automatically transitions to the success state once processing is finished in interactive widgets. The in-place loading indicator transforms into a success icon, and if there are more items in the list, the widget is replaced with the next item.

Success state in interactive widgets
Success state in interactive widgets

Fail State

There is no required success state in interactive widgets. The processing button changes back to the button’s default state.

Fail state in interactive widgets
Fail state in interactive widgets

Tapping on Widget

Tapping on a widget navigates the user to the app and opens the corresponding page, such as a list report page type.

Navigation by tapping on a widget
Navigation by tapping on a widget

Tapping on Row or Column

Tapping on a row or a column in the widget body, such as an object cell, navigates the user to an object details page that corresponds with the cell’s subject.

Navigation by tapping on a row or column
Navigation by tapping on a row or column

Empty State

If there is no content to display, the empty state message on a widget lets the user know what’s happening, why it’s happening, and what to do about it.

Empty states in widgets
Empty states in widgets

Resources

Multi-User Onboarding

The multi-user onboarding pattern is used to address onboarding scenarios where more than one users may share a device. Users are able to select from a list of existing accounts on the device to login with or add a new account. 

This pattern is an extension of, or additional module to, the general onboarding pattern. For more information, click here.

Multi-user onboarding process flow
Multi-user onboarding process flow

Usage

Only use the multi-user onboarding pattern when there is more than one user who may share a single device. It is used in tandem with the single-user onboarding pattern as an additional module to the overall onboarding process.

Anatomy

Sign In

A. Application Details

• App Logo: Optional, recommended for better branding visuals.
• App Title: Use clear and concise naming conventions for the application’s title. It’s recommended to keep the title length to two rows for compact screens and one row for regular.

B. User Profile

User profile can contain items that provide more information about the user such as a profile image, user’s name, job title, etc. The items are fully customizable to provide admins and developers the flexibility to address any privacy or security concerns.

• User Image: Optional, if a user’s profile image is not available, the user’s initials can replace the image instead.
• User Title: Use as the primary identifier for the user, such as their name.
• User Subtitle: Use as the secondary identifier for the user, such as their job title.

C. Sign In Form

• Passcode Field: Can be set to accept strictly numeric or alphanumeric.
• Sign In Button: 
The button label should be “Sign In” as the primary call to action. Before a passcode is entered, the Sign In button should remain disabled. When tapped, the credentials are validated and will route the user to the Sync flow.
• Forgot Passcode Link: Takes users to a screen where they can recover their passcode.

D. Switch or Add User Button

Allows the user to either select existing user accounts on the device to sign in with or add a new user and go through the onboarding process

 

Anatomy of multi-user sign in
Anatomy of multi-user sign in

Switch or Add User

E. Navigation Bar

The navigation bar contains a “Back” button, screen title, and the “Add New User” action button.

F. Search Field

The search field is located below the navigation bar.

G. Selected User Section

The selected user section sits below the search field and indicates the current user selected on the sign in screen.

H. User List

The user list sits below the search field and displays available users that have already onboarded on that specific device.

 

Anatomy of switch or add user
Anatomy of switch or add user

Behavior and Interaction

Once the user takes an action on a view to proceed further, the next view in the process is presented. Include a blank white screen as a layer above the launch screen when these modular transitions take place. Once the entire onboarding process is complete, the launch screen transitions into the Home screen of the app.

Sign In

The user profile that is loaded/selected on the “Sign In” screen is the current/previous user’s by default. To sign in with the currently selected user profile, the user needs to first tap on the passcode input field and enter in their passcode.

Passcode Field

Tapping on the passcode field shifts up the content view adjusting for the system keyboard. The placeholder “Passcode” italicized text is replaced with the user’s obfuscated passcode entry.

Sign In Button

Tapping on the enabled “Sign In” button, the user starts the user authentication and sync process.

Forgot Passcode Link

Tapping the “Forgot Passcode?” link triggers a push to another screen where the user can retrieve or change their passcode.

Switch or Add User Button

Tapping “Switch or Add User” pushes to the “Switch or Add User” screen.

Signing into selected user's account
Signing into selected user's account

Switch or Add User

Back Button

The “Back” button saves the current user profile selection and closes the modal, returning to the Sign In screen with the updated user profile.

Add User Button

The “Add User” icon button opens to the onboarding flow.

Search

The local search uses a prominent search bar that allows users to search for and select user profiles that onboarded and have been stored on the device. For more information, see Search.

User List

The user list works like the list picker component, the user taps on a listed user profile to select and deselect. A checkmark indicates the user’s selection. List title sections such as “Selected” and “All” are displayed depending on whether the number of user profiles can fit in the view.

Switching users or adding new user
Switching users or adding new user

Adaptive Design

Multi-user onboarding in compact (left) and regular width (right)
Multi-user onboarding in compact (left) and regular width (right)

Resources

Development: Onboarding PatternsFUIMultiUserPasscodeController

SAP Fiori for Android: Multi-User Onboarding

Related Components/Patterns: Single-User Onboarding, List Picker, Search

Consent Forms

The consent form pattern is generally used in onboarding scenarios. It stores a digital record of the user’s understanding and permission of the terms of an event, activity, or service that will be performed by the application.

Consent form in compact width (left) and regular width (right)
Consent form in compact width (left) and regular width (right)

Anatomy

A. Navigation Bar

The navigation bar contains the consent form action buttons, such as “Cancel”, “Back”, or “Next”. 

B. Body Title

The body title should be a concise label that describes the consent form topic.

C. Body Text

The body text should detail how the consent form topic pertains to the app and why it is important for the user to agree to the form.

D. Learn More Link (Optional)

The “Learn More” link gives users more information about the consent form topic.

E. Toolbar with Actions

The toolbar is used for the primary consent form actions.

Consent form anatomy
Consent form anatomy

Behavior and Interaction

Scroll

By default, the navigation bar or header has the same background color as the screen background. However, when scrolling is enabled, the navigation bar transitions to having a shadow effect on the bottom. This scrolling behavior is applicable to all compact and regular widths as well as any onboarding screen that has a navigation bar that matches colors with the screen view background.

Information
Triggering a consent form will have the form modal slide up from the bottom of the screen. On dismissal the modal will slide down.
Consent form that has not been scrolled (left) and consent form that has been scrolled (right)
Consent form that has not been scrolled (left) and consent form that has been scrolled (right)

Alerts

The alerts for the consent forms use the standard two-button iOS alert.

Cancel

Optional and mandatory scenarios: if the user taps “Cancel”, they will trigger an alert asking if they want to quit the onboarding process. Choosing “No” will dismiss the alert and continue with the onboarding process.

Deny

Mandatory scenario: if the user taps on “Deny” on a screen that requires consent, they will trigger an alert that says the user must give consent in order to continue with the onboarding process.

Cancel alert (left) and deny alert (right)
Cancel alert (left) and deny alert (right)

Sequential

The first step of the sequential form always includes a “Cancel” button in the navigation bar. The first step is a modal that slides up from the bottom of the screen. From step 1, the user must tap “Next” to continue with the next steps.

All subsequent steps have <Back to (Screen Title). They can go back to the previous step by tapping the “Back” navigation in the navigation bar. The following steps are a push. The final step has the toolbar with actions “Not Now” or “Deny” and “Allow”. When the last step is complete, the modal is dismissed and slides down.

Fist step of the sequential form (left), second step (middle) and last step (right)
Fist step of the sequential form (left), second step (middle) and last step (right)

Variations

Form Conditions

Optional

If the user taps on “Not Now” or “Allow”, there is no alert. It simply dismisses the consent form and takes the user to the next step of the onboarding process.

Mandatory

If the user taps on “Deny”, they get an alert saying they must give consent to continue. Tapping “Allow” dismisses the modal and takes them to the next step in the onboarding process.

Optional consent form (left) and mandatory consent form (right)
Optional consent form (left) and mandatory consent form (right)

Form Arrangements

Single and sequential forms can be either mandatory or optional. If there are a mix of single and sequential consent forms, the single consent form will be a separate modal and the sequential forms will be presented in a separate modal.

Single

If there are multiple single consent forms, they will all be presented as separate modals (should not be bundled in one modal). There are no titles on the single consent screens.

Sequential

For sequential forms, the navigation bar shows the current and total numbers of the form pages. The action bar doesn’t appear until the user reaches the last page in the form.

Single consent form (left) and sequential consent forms (middle and right)
Single consent form (left) and sequential consent forms (middle and right)

Resources

Development: Onboarding Patterns

Related Components/Patterns: Navigation Bar

Basic Authentication

The basic authentication pattern is used for general authentication purposes.

Basic authentication examples
Basic authentication examples

Anatomy

A. Navigation Bar

The navigation bar includes a “Cancel” button for users to exit the authentication.

B. Body Title

The body title should be a concise label that describes the authentication step.

C. Body Text

The body text should detail how to properly complete the authentication step.

D. Text Input Fields

The text input fields are set by the admins and developers (can be more than two fields).

E. Sign In Button

Used to complete the authentication step and start the information verification process.

 

Basic authentication anatomy
Basic authentication anatomy

Behavior and Interaction

Sign In

Once all text fields are filled in, the “Sign In” button changes states from disabled to enabled. Tapping on the enabled “Sign In” button starts the information verification process.

Example of sign in
Example of sign in

Authentication

Information Verification

Feedback banner with “Verifying Information…” label as the system is verifying information inputted in text fields.

Failed Sign In

Feedback banner with “Sign In Failed” label to alert user that sign in attempt has failed.

Example of authentication
Example of authentication

Adaptive Design

Authentication screen on compact and regular width devices
Authentication screen on compact and regular width devices

Resources

Development: Basic Authentication

Biometric Authentication

Biometric authentication detects and recognizes certain human physical features for security authorizations. Apple supports Face ID and Touch ID as convenient and secure biometric authentication methods – and by extension so does SAP Fiori for iOS.

Biometric authentication examples
Biometric authentication examples

Anatomy

A. Navigation Bar

The navigation bar contains the title and “Cancel” action depending on the usage.

B. ID Icon

The ID Icon should match the type of biometric authentication feature specific to the device being used.

C. Description

The description should concisely explain the function and benefit of the type of biometric authentication.

D. Sub Description

The sub description should detail how users can later edit the biometric authentication feature.

E. Button(s)

The emphasized button lets users enable the biometric authentication feature.

F. Learn More Link

The “Learn More” link gives users more information about the type of biometric authentication.

Biometric authentication anatomy
Biometric authentication anatomy

Variations

Biometric Type

Touch ID

If the user taps on “Not Now” or “Allow”, there is no alert. It will simply dismiss the consent form and will take the user to the next step of the onboarding process.

Face ID

If the user taps on “Deny”, they will get an alert saying they must give consent to continue. Tapping “Allow” will dismiss the modal and take them to the next step in the onboarding process.

Examples of the different types of biometric authentication: Touch ID (left) and Face ID (right)
Examples of the different types of biometric authentication: Touch ID (left) and Face ID (right)

Button

Single and sequential forms can be either mandatory or optional. If there are a mix of single and sequential consent forms, the single consent form will be a separate modal and the sequential forms will be presented in a separate modal.

One Button

If there are multiple single consent forms, they will all be presented as separate modals (should not be bundled in one modal). There are no titles on the single consent screens.

Two Buttons

For sequential forms, the navigation bar shows the current and total numbers of the form pages. The action bar doesn’t appear until the user reaches the last page in the form.

Examples of the different buttons for biometric authentication
Examples of the different buttons for biometric authentication

Authentication Overview

Authentication occurs when there is a need to verify the identity of a user in order to run or complete an action. This helps to keep users’ information private and secure, especially in scenarios where devices may be shared amongst users.

Variations

Basic Authentication

Basic authentication consists of passcode/login variations which are highly customizable. To learn more, see Basic Authentication.

Examples of basic authentication
Examples of basic authentication

Biometric Authentication

Biometric authentication refers to technologies that can be used to detect and recognize certain human physical features for security authorizations. Apple supports Face ID and Touch ID as convenient and secure biometric authentication methods – and by extension so does SAP Fiori for iOS. To learn more, see Biometric Authentication.

Examples of biometric authentication
Examples of biometric authentication

Signature Capture

Signature capture allows users to input their signature by signing on the screen. The signature is captured and saved in the backend with a watermark. To learn more, see Signature Capture.

Examples of signature capture
Examples of signature capture

Resources

QR Code Scanner

The welcome screen with scan uses a QR code scanner as another way to onboard. Before starting the activation process, the user must be provided with a QR code to scan. Users can scan a QR code by using a camera or by scanning via images saved on their phone camera roll/gallery.

QR code scanner examples
QR code scanner examples

Anatomy

A. Modal Stack

The stacked modal navigation bar includes a “Cancel” button for users to exit the modal, a “Scan” title, and a “Flash” Button toggle.

B. Alignment Guide

The alignment guide provides guidance to the user when pointing the camera to a QR code.

C. Chevron

Used to control the visibility state (revealed or hidden) of the scrolling camera roll.

D. Scrolling Camera Roll

Lets users scroll horizontally through their camera roll.

E. Camera Gallery Icon

Lets users open their camera gallery and access their photos and albums.

F. Successful Scan Confirmation Content

Information to let the user know that their scan was successful.

G. Call-To-Action Button

Used to continue on with the onboarding process.

 

Scan with expanded camera roll and successful scan anatomy
Scan with expanded camera roll and successful scan anatomy

Behavior and Interaction

Camera View

Users can scan a QR code by using the camera. Once the QR code is lined up inside of the scan guide and is recognized, the system displays the appropriate feedback.

Successful scan with camera view
Successful scan with camera view

Permission

The user needs to allow access to their photos via settings if they haven’t already done so in order to use the camera roll controls. Once access is given, the camera roll is revealed.

Giving permission for photos access
Giving permission for photos access

Scrolling Camera Roll

Users can scroll horizontally through their revealed camera roll. It can be collapsed or expanded by tapping on the chevron.

Horizontal scroll on expanded scrolling camera roll
Horizontal scroll on expanded scrolling camera roll

Camera Rolls Collapse

Users can collapse or hide the scrolling camera roll by tapping or pulling the down chevron. The camera roll control snaps when toggling from expanded to collapsed camera roll. Once the camera roll is collapsed, the down chevron becomes an up chevron.

Collapsing the scrolling camera roll
Collapsing the scrolling camera roll

Camera Gallery

As an alternative to the scrolling camera roll, users can view and select their photos from their camera gallery by tapping the image icon at the bottom of the screen.

Opening photos gallery
Opening photos gallery

Scan Feedback

Unsuccessful Scan: The user has scanned or selected a non-QR code image.

Invalid QR Code: The user has scanned or selected an invalid QR code.

Successful Scan: The user has scanned or selected the valid QR code

Scan feedback examples
Scan feedback examples

Resources

Development: FUIOnboardingScanViewController

Related Components/Patterns: Barcode Scanner

Chart Types

SAP Fiori for iOS supports multiple chart types. Depending on the type of data in your app and how users will use the chart, it is important to select a chart type that will best meet users’ needs.

From left to right: line chart, column chart, horizontal bar chart, and donut chart floorplans in compact mode
From left to right: line chart, column chart, horizontal bar chart, and donut chart floorplans in compact mode

Variations

Horizontal Bar Chart

The horizontal bar chart displays horizontal bars aligned to the y-axis. The bars are used to represent discrete quantities or amounts.

Compared with column charts, horizontal bar charts have more space available for their item labels so they’re great for visualizing discrete values when data labels are long, for example, for product names.

Do
  • Use to represent measurements for discrete items.
  • Use for items that have long label names, because the y-axis labels can expand.
Don't

Don’t use horizontal bar charts to display time-based data, because time values are usually demarcated from left-to-right along the x-axis, but here the x-axis is used to show the value of each chart item.

Horizontal bar chart
Horizontal bar chart

Column Chart

Column charts use vertical bars to represent quantities and amounts. With their side-by-side arrangement of columns, they can be used to illustrate changes in values over time. The horizontal spacing between each column or cluster serves to reinforce the distinctness of each chart item or group. Please note that the y-axis baseline always starts at 0, with positive values appearing above and negative values below.

Do
  • Use for comparing values from non-time series datasets.
  • Can be used instead of a line chart for time series data when it is either more important to see the value of each item than the overall shape of the data or the dataset is missing values, which would create gaps in a line chart.
Don't
  • Don’t use with extremely large data sets, because the columns will be too narrow to accurately differentiate or easily select; use a line chart instead.
  • Don’t use when the x-axis labels become truncated; use a horizontal bar chart instead (only for non-time series datasets).
3 series column chart
3 series column chart

 

Stacked Column Chart

The stacked column chart is an extension of the column chart, and is great for showing the total of a group as well as the different categories within the whole that make up the total. This chart works well when the focus of the chart is to compare the totals and one part, or category, of the total.

 

Single Selection

There are two selection variations for the stacked column chart. Single selection is where a single column can be selected as a whole to view the total sum along with the total of each category.

Three-series stacked column chart
Three-series stacked column chart

 

Series Selection

This variation allows for one category, or series, of the column to be selected and compared. App teams should select which option works best for their data set and use case.

Do
  • Use when it is important to compare individual groups that are part of a whole.
  • Use to show how a larger category is divided into smaller categories and what the relationship of each part has on the total amount. 
Don't
  • Don’t use with large data sets, because the categories within the column will be too small to effectively see the patterns in the data.
  • Don’t use this chart when you can have negative values as there is no way to show negative spaces in a positive column.
3 series stacked column chart
3 series stacked column chart

Line Chart

Line charts use straight lines connecting points plotted in 2-D space to represent data and trends. They are useful for showing the change in values (continuous or discrete) over time.

Do

Use to display a trend in the data, because the connections between the data points provides an overall shape to the dataset.

Don't
  • Don’t use for data sets when the values along the x-axis are unrelated, because the line may imply a trend that does not exist.
  • Don’t use when the dataset is missing several values, because breaks will appear in the line; use a column chart instead.
2 series line chart
2 series line chart

Area Charts

Area charts depict data and trends with straight lines connecting points plotted in 2D space, and emphasize volume with color filled in the space between the lines and the axis. They can be used for highlighting changes on volume of data over time.

Do

Use to display and emphasize quantitative progression over time.

Don't
  • Don’t use when x-axis data and y-axis data are unrelated.
  • Don’t use when there are values missing in your data set. It will cause breaks in the area chart; use a column chart instead.
2 series area chart
2 series area chart

 

Combination Charts

Combination (or “combo”) charts are a combination of column and line charts. They can be used to display changes in discrete values over time compared to a measurement such as a mean, target, or expected value.

Do
  • Use when it is important to directly compare two different series that use the same measure (y-axis). A two-series column or horizontal bar chart can also be used, depending on the dataset.
  • Because combo charts rely on line charts, the dataset should either be a time series or involve the ranking of items.
Don't

Don’t use for data sets when the values along the x-axis are unrelated, because the line chart may imply a trend that does not exist.

Combination chart
Combination chart

 

Waterfall Chart

A waterfall chart uses columns to visualize the cumulative effect of increases and decreases of a set of data. The height and color of the columns are determined by the values. The value is displayed by selecting a single column. The legend of a waterfall chart always displays the corresponding colors to indicate an increase, decrease or total.

Do
  • Use to display a sequential data set.
  • Use contrasting colors to highlight differences in values.
Don't
Do not use to compare data sets.

Waterfall chart
Waterfall chart

 

Scatter Chart

Scatter charts have a specific purpose. They allow you to show the correlation and relationship between two variables. The data visualization uses dots to represent the values obtained for two different variables, x and y, and shows how much one variable is affected by another. It is used to show trends. Additional colors of the dots allow you to add a third dimension or series to the plot.

 

Series Selection

If there are multiple series, users can select one series by tapping on the corresponding item in the legend. The series they have selected is displayed as the most prominent in the plot area.

Data Point Selection

If users want to see the x and y values for one single data point variable, they can tap on a point. A vertical and horizontal guide appears allowing them to slide their finger from point to point. Their values are reflected in the summary section.

Do

Use this chart when you need to show a correlation between two variables.

Don't

Don’t use a scatter chart if the variables do not have a direct relationship with each other.

Scatter chart
Scatter chart

 

Bubble Chart

Bubble charts are similar to scatter charts  in that they show correlation between data but they add a third dimension which is visualized by the size of the circle. Both the scatter and bubble charts are useful when showing trends, clusters, patterns, and relationships. Additional colors of the circles allow you to add a fourth dimension or series to the plot.

 

Series Selection

When there are multiple series, users can isolate and view a single series by tapping on the series in the legend. The series they have selected is displayed as the most prominent in the plot area.

Data Point Selection

Like the scatter chart, users can select one single data point (circle) by tapping directly on it. A vertical and horizontal guide appears allowing them to slide their finger from point to point. Their values are reflected in the summary section.

Do
  • Use this chart when you need to show a correlation between the variables in your data set.
  • Size bubbles appropriately by scaling the size of the bubble by area and not diameter.
Don't
  • Avoid using odd shapes.
  • Avoid too many sizes in a plot as it may look chaotic.

Bubble chart
Bubble chart

 

Stock Charts

Stock charts are similar to line charts in that they show trends of data with straight lines connecting points. To provide complete information to users, we recommend not omitting any essential data when designing a stock chart.  

A stock chart is interactive. A user can tap and slide their finger on the trend line to see how prices change over time.

Ticker Name

A ticker name identifies the company on the stock exchange.

Current Trading Price (Spot Price)

The value of the stock at this moment in time.

Open/High/Low/Close (OHLC)

  • Open: The value of the stock at market open
  • High: The stock’s highest value during the day’s trading session
  • Low: The stock’s lowest value during the day’s trading session
  • Close: The final price

Volume

The number of shares traded during the day’s trading session.

Stock chart
Stock chart

 

Donut Chart

Donut charts are ideal for a part-to-whole data analysis. A donut chart shows how a total amount is divided between levels of a categorical variable as a circle divided into radial segments.

Chart segments are interactive. A user can select one or multiple segments by tapping them to see the percentage and metric value of the selected segments.

Do
  • Use a unique color for each segment.
  • Sort segments from the largest segment to the smallest segment in the clockwise direction. However, when the segment labels have an inherent ordering, then plotting the segments in that order. e.g. Strongly Agree, Agree, Disagree, Strongly Disagree
Don't

Avoid using more than five segments. A donut chart becomes difficult to understand when there are many segments.

Donut chart
Donut chart

Resources

Development: FUIChartFloorplanView

SAP Fiori for Android: Chart Types

Related Components/Patterns: Chart Overview

Single-User Onboarding

In enterprise software, onboarding is the process of activating an existing user account and getting the user up and running with the app with key instructions. Existing user accounts are typically assigned by an admin or the IT department. The onboarding process can vary depending on the configuration of the app by the admin or the IT department in terms of data sensitivity, security level, and number of users.

Click here for the detailed onboarding process flow.

Single-user onboarding process flow
Single-user onboarding process flow

Usage

Do
  • Welcome users with an element of excitement for the experience ahead.
  • Keep the entire onboarding process as simple as possible and use clear language that gets straight to the point to avoid any churn.
  • Only ask users for essential information and be sure to explain the importance of requested details since the onboarding process can be time-consuming.
Don't
  • Don’t repeat the onboarding flow after the user has completed the process the first time.
  • Don’t skip the onboarding flow for first-time logins.
  • Don’t ask the user for multiple permission requests, such as camera access, notifications, settings, etc., during the onboarding process unless it’s necessary to the app experience.

Anatomy

Installation

Users may receive an email about the availability of the app and have to download it or the app may be pre-installed on the company device given to the users.

Email

A well-designed welcome email plays a key role in introducing an enterprise app to its users since most enterprise users are required to use certain apps for their work.

Things to consider:

  • Inform the user about the benefits of the app to help them understand why their workplace values the app.
  • Provide short and clear instructions about the onboarding process in the email. Indicate that the process is sequential (if it is).
Introducing an app via email and in the app store
Introducing an app via email and in the app store

Launch

Welcome Screen

The welcome screen serves  to set the overall tone of the app  while also succinctly presenting major information and features to the user. It provides key actions for users to start interacting with the app, including agreeing to legal terms, trying out demo mode, and continuing to the application setup. Depending on how you want user’s to onboard, there are other types of welcome screens that are further detailed in the Variations section.

Welcome screen and example for an optional demo
Welcome screen and example for an optional demo

Activation & Authorization

Cloud Identity Service

The activation process is to validate the user and make the connection between the app and the backend. Users need to provide their credentials on the sign in screen, which uses the basic authentication pattern, to activate their profile. The application then needs access to the user’s account to populate the app with relevant data. 

Cloud Identity Service sign in
Cloud Identity Service sign in
Target designs for Cloud Identity Service login
Target designs for Cloud Identity Service login

Permission

EULA and Other User Consent Agreements

An End User License Agreement (EULA) is a legal contract between a software application author or publisher and the user of that application. Along with that, we have also designed consent forms to capture consent on data privacy and app-related services such as location sharing and voice permissions all of which use the consent form pattern.

Screens of EULA and other user consent agreements
Screens of EULA and other user consent agreements

Authentication Setup

Most enterprise apps use ‘Secure Storage’ to keep the data secure via encryption. Touch ID or Face ID with device passcode as fallback acts as a key to unlock this data and provide additional security. Each time the user launches the app, they will be asked to authenticate using Touch ID or Face ID as it allows the users to authenticate and sign in to the app faster. If the app requires an app-specific passcode, use that as a fallback to Touch ID or Face ID, which uses the biometric authentication pattern.

Things to consider:

  • When deciding to enforce passcode use, keep the nature of the data that the app holds in mind.
  • Choose the length and rules of the passcode wisely. It is easier to break a short-length numeric passcode.
  • Present a generic alphanumeric keyboard to avoid revealing the nature and length of the passcode to a returning user.
Authentification per passcode or face ID
Authentification per passcode or face ID

Behavior and Interaction

Onboarding is designed to be a modular process to provide flexibility in terms of setting it up as per the app’s requirement.

The various views in onboarding are designed to be modal windows to give users a way to exit the onboarding process at any time.

Once the user takes an action on a view to proceed further, the next view in the process is presented. Include a blank white screen as a layer above the launch screen when these modular transitions take place. Once the entire onboarding process is complete, the launch screen transitions into the Home screen of the app.

Variations

Types of Welcome Screens

Variations of the welcome screen support the different services that can be used to onboard a user. If the developer is already aware of the supported backend setup, any of the appropriate variations below can be utilized.

  • Mobile Device Management (MDM) and Hardcoded: MDM is a push model so the onboarding data is just pushed to the app and the data is made available. Hardcoded requires the developer to include the onboarding data into the compiled app. In both cases, the user can onboard by signing on the Cloud Identity Services login screen directly from the launch screen.
  • Activation Link: An activation link, generally provided in the welcome email, is required to start the activation process.
  • Discovery Service: The user is required to enter their corporate email address on this variation of the launch screen which the Discovery Service then uses to make the right backend connection.
  • QR Code Scanner: The user must be provided a QR code to scan that is required to start the activation process. To read more, check out QR Code Scanner.

If a standard app is getting shipped via the App store, the following option with all variants of onboarding should be used:

Standard App Store: The user can onboard on the activation screen as the app has no way of knowing which onboarding variant is supported by the customer.

Different variations of the welcome screen
Different variations of the welcome screen

Configurations for Welcome Screens

The welcome screen also supports some other configurations to further customize themselves.

  • Top Image: A image placed on the header area that is generally used for application logos.
  • Bottom image: This image is placed in the footer area and is generally used to add secondary logos, such as parent companies or affiliates.
  • User Legal Agreements: In proprietary software, an end user license agreement (EULA) or software license agreement is the contract between the licensor and purchaser, establishing the purchaser’s right to use the software. To move forward in the onboarding process, users must agree to the contracts. This area lists out the hyperlinks to the legal terms that users must agree to before proceeding to the app. Users must check the checkbox to continue with the app. The Terms of Service are also surfaced here for the user to view if they wanted to.
Different configurations for welcome screens
Different configurations for welcome screens

Adaptive Design

The welcome screens for single user onboarding are only available in portrait mode for compact screens; however, on regular screens they support both portrait and landscape layouts. In general, the onboarding screens can adapt their widths to fit various iOS device sizes.

Welcome screen on compact screen width (left) and regular screen width (right)
Welcome screen on compact screen width (left) and regular screen width (right)

What’s New

The what’s new component shows users the updates to your application. It can also be used for announcing news, bug fixes, etc.
What's new component in compact width (left) and regular width (right)
What's new component in compact width (left) and regular width (right)

Usage

Users can use the what’s new component to view updates of an application in two ways: in a pop-up modal and from their profile.

Pop-Up Modal

The component can be shown as a pop-up modal after the user logs in.

What's new component as pop-up modal
What's new component as pop-up modal

From Profile

The component can be found in the profile page menu list.

What's new component linked in profile
What's new component linked in profile

Anatomy

The page view with image includes three existing components: stacked modal, button, and page indicator.

A. Stacked Modal

The stacked modal navigation bar includes the title and a “Close” button for users to exit the modal.

B. Content

• Image: Optional, however using eye-catching images to show visualized features is recommended.
• Title: Use a clear and concise title to provide users an overview of the feature.
• Description: Explain your feature briefly. The content section is scrollable if the description is too long.

C. Call-To-Action Buttons

• “Next”: Use the “Next” button for the first or middle pages in the multiple page view.
• “Start”: Use the “Start” button for the last page in the multiple page view of or on the single page view.
• From Profile: Don’t use a call-to-action button when want users to open What’s New from the profile page.

D.  Page Indicator

The page indicator is used to show the progress of the wizard when there are multiple pages.

Anatomy of the what's new component
Anatomy of the what's new component

Behavior and Interaction

In the page view, when users tap “Next”, the next page in the wizard is presented by a push transition; users can also swipe left or right to navigate through pages; when they tap “Start” or “Close”, the modal is closed.

Behavior and interaction of the what's new component
Behavior and interaction of the what's new component

Adaptive Design

The what’s new component supports both compact and regular sizes. The SDK also supports landscape views for both compact and regular sizes.

What's New on compact with (left) and regular width (right)
What's New on compact with (left) and regular width (right)

Variations

The what’s new component includes a list view design and page view design. Both include ‘with image’ and ‘no image’ options. We recommend a short user flow with images.

Choose list view if:

  • There are three to six updates to be announced.
  • You want users to spend less time reading each update.
  • You have a short description and/or small images.
List view with imagse (left) and without images (right)
List view with imagse (left) and without images (right)

Choose page view if:

  • There are one to four updates to be announced.
  • You have a long description and/or big images.
  • You want users to spend more time reading each update.
Page view with image (left) and without image (right)
Page view with image (left) and without image (right)

Resources

Sibling Navigation

In apps designed with hierarchical navigation, sibling navigation can help users to easily navigate between child objects.

Sibling navigation in compact width (left) and regular width (right)
Sibling navigation in compact width (left) and regular width (right)

Usage

Do

Use sibling navigation when you have a sequence of objects, such as instructional steps, work orders, or hardware components lists.

Don't
  • Don’t use sibling navigation to replace hierarchical navigation, which is used to navigate between parent and child objects. Sibling navigation should only be used to navigate between child objects.
  • Don’t use it when there is no sequence of objects in your application.

Anatomy

Sibling navigation uses two existing components — the navigation bar title (two-line title) and toolbar:

A. Info in Navigation Bar

Upper Line: Shows the current and total numbers of the sibling pages
Lower Line: Shows the parent name of the sibling pages

 

B. Buttons in Toolbar

Previous: Brings the user back to the previous child view page
Next: Brings the user to the next child view page

Sibling navigation anatomy
Sibling navigation anatomy

Behavior and Interaction

When the user navigates to the next child view via sibling navigation, the child view will be presented by push transition.

Adaptive Design

The layouts on both compact and regular follow the standard toolbar behavior and adapt accordingly.

Sibling navigation in compact width (left) and regular width (right)
Sibling navigation in compact width (left) and regular width (right)

Variations

Text-Based Sibling Navigation

Text-based sibling navigation is best used if one of the following applies to your app:

  • It has a toolbar and action buttons
  • It doesn’t have a toolbar

 

Icon-Based Sibling Navigation

Use icon-based sibling navigation if the following applies to your app:

  • It has a toolbar and two or more action buttons
  • It has a toolbar that is icon-based
  • It is only available for compact width devices
Information

We recommend using the icon-based toolbar only for compact width devices. For regular widths, we recommend using a text-based toolbar, as it has more space to show the complete text string.

Text-based sibling navigation (left) and icon-based sibling navigation (right)
Text-based sibling navigation (left) and icon-based sibling navigation (right)

Resources

Development: FUIPageViewController

Related Foundation: Navigation

Hierarchy

The hierarchy pattern is a combination of the hierarchy view and a list report. 

A combination of these views allows for a wider range of functionality in different kinds of workflows. For example, the hierarchy pattern can be utilized in a create use case.

Workflows using the hierarchy pattern
Workflows using the hierarchy pattern

Anatomy

List Report

A list report within the hierarchy pattern has an added hierarchy accessory. The list report allows for standard functionalities such as search, filter, and create.

A list report within a hierarchy pattern
A list report within a hierarchy pattern

Hierarchy View

The hierarchy view is the second screen in the hierarchy pattern. It places the selected object into view with its parent and/or child objects expanded. For related guidance, see Hierarchy View.

A hierarchy view within a hierarchy pattern
A hierarchy view within a hierarchy pattern

Behavior and Interaction

Single Selection

A list picker with single selection can be used in the hierarchy pattern. It is useful for the create use case where you need to identify where an object lives within a specific group or location.

Using a list picker in a hierarchy view
Using a list picker in a hierarchy view

Adaptive Design

When using the hierarchy pattern in a modal, use the hierarchy view with a breadcrumb.

Using a hierarchy view in a form sheet
Using a hierarchy view in a form sheet

Resources

Time and Date Formats

There are many different time and date format conventions, with no “right” approach for all situations. Conventions also vary widely around the world, and it would be counterproductive to formalize a single, unified approach to representing time and date across SAP Fiori for iOS.

That said, there are best practices to consider. Instead of a list of requirements, this section shares general tips to help lend coherence and consistency to SAP Fiori for iOS apps.

It is based on U.S. time and date standards.

Time Formats

12-Hour Time

12-hour time is standard in the U.S. The day is divided into two 12-hour periods, indicated as day or night with “AM” or “PM,” respectively.

Midnight is 12:00 AM (followed by 12:01 AM); Noon is 12:00 PM (followed by 12:01 PM).

Leading Zeroes

For hours between 1 and 9 (AM or PM), do not include a leading zero.

Do
How to use leading zeroes
How to use leading zeroes
Don't
How not to use leading zeroes
How not to use leading zeroes

AM/PM Indicators

The AM/PM indicator should generally be included, and it should:

  • be capitalized
  • have no periods after the letters
  • have no spaces between the letters
  • be separated from the time with one space

If it’s very clear that a time refers to day or night, the AM/PM can be omitted – for example, standard working hours can be written as “9 – 5” instead of “9 AM – 5 PM.”

Do
How to use AM/PM indicators
How to use AM/PM indicators
Don't
How not to use AM/PM indicators
How not to use AM/PM indicators

 

24-Hour Time

A less common time convention in the U.S. is 24-hour time. Also known as “military time,” it is more common outside the U.S.

The day starts at 00:00 and ends after 23:59. There is no AM/PM indicator, and both the hour and minutes always use two digits.

Midnight is written as 00:00 (followed by 00:01).

Noon is written as 12:00 (followed by 12:01).

There is a leading zero for hours earlier than 10:00:

  • 01:00 = 1:00 AM
  • 09:59 = 9:59 AM
  • 00:30 = 12:30 AM

In the afternoon, the hour increases above 12:

  • 13:00 = 1:00 PM
  • 23:59 = 11:59 PM

As 24-hour time is not very common in the U.S., the rest of the time guidelines focus on 12-hour time.

Time Use Cases

Exact Time

Exact time is used to indicate a precise moment during the day.

When precision is important, include full details:

  • 11:15 AM
  • 1:10 AM
  • 12:00 PM

When only the hour is important, the minutes can be omitted:

  • 12 PM
  • 1 AM

When it’s clear the time refers to day or night, the AM or PM indicator can be left off:

  • Breakfast at 7
  • Dinner at 6:30
Exact time examples
Exact time examples

Relative Time

Relative time refers to a moment as compared to the current time.

It can either be written in long form or abbreviated, depending on available space and user preference. Just be consistent!

When using abbreviations, follow the format in these examples.

Relative time examples
Relative time examples

Time Ranges

When listing a time range, the exact formatting approach is less important than being consistent across the app.

These examples show two different approaches for listing time ranges.

Time ranges examples
Time ranges examples

Durations

Durations indicate the length of a span of time.

They can either be written in long form or abbreviated, depending on available space and user preference. Just be consistent!

When using abbreviations, follow the spelling found in these examples.

Durations examples
Durations examples

Date Use Cases

Relative Dates

Relative dates are dates as compared with the present moment.

See the timeline below as a reference for language. Both the options above the line and those below it are fine.

If it is necessary to abbreviate a relative date, try to follow the formats listed in this chart where possible. Please note that terms like “last week,” “yesterday,” “today,” and “tomorrow” change a bit when abbreviated.

Pay close attention to the app screen’s context – for example, using “m” to abbreviate months on the same screen as “m” is used as an abbreviation for miles could be confusing to users.

Relative dates examples
Relative dates examples

Space Constraints

When space is tight, it may become necessary to abbreviate, truncate, or leave out date and time information.

Determine which content is most important to the user and try to retain as much of it as possible. For example, if knowing the date is very important but knowing the time less so, keep the date in full and shorten or leave out the time.

There’s no right way — just be consistent.

Space constraints examples
Space constraints examples

Date and Time Use Cases

In some cases, it is important to show both the date and time – for example, a document timestamp or an event time.

In these cases, decide which is more important to the user (the date or the time) and place this information first.

Resources

Related Component: Pickers

Map

The map pattern is designed to display the location of business objects and give a visual indication of the object type, such as a point, polyline or polygon. It can also be used to show points of interest, optimized routing based on business criteria, and other quantitative location-based data.

Example of the map view on compact (left) and regular (right)
Example of the map view on compact (left) and regular (right)

Usage

The map features allow users to:

  • Quickly access geospatial and business data from the field
  • Search for business objects
  • See an overview of business objects and their locations
  • Quickly access previews of business objects
  • Get directions to business objects from their current location
  • Show and hide different map view and feature layers

Anatomy

A. Map Search

Search is an optional feature that can be included in the map view.

There are two types of search panels: one with a list of business objects displayed, and one with only the search bar. When using the search panel with the list, the items should be presented as object cells, and the list can be filtered. Please refer to the object cell and filter guidelines for more details.

Search panel on the map view
Search panel on the map view

B. Toolbar

The toolbar appears at the top-right corner of the map. It contains buttons for performing actions relevant to the current view or the content within it. There are five default actions available to use in the toolbar and you may include up to six actions.

The five default actions are:

  • Map Settings: Appears as a modal window when the user taps on the information icon. The content that appears within the settings modal depends on each app’s specific needs. Some examples for settings are Map View Options, Feature Layers Options, Near Me Radius, and Map Unit Measure.
  • Current Position: Displays the user’s real-time location if the device’s GPS setting is turned on. The user’s current location is highlighted on the map. There are two states of the current position icon: On and Off.
  • Show/Hide Panels: Moves all panels including the search box off the screen. Tapping the button again returns the panels to their previous positions.
  • Map Legend: Provides detailed information about the symbols and visual elements that appear on the map view.
  • Zoom Extents: Resets the map zoom to a level where all available markers appear on screen at once.
Map toolbar that displays the map legend
Map toolbar that displays the map legend

C. Map Markers

Map markers indicate either single or multiple business objects on a map. They can be represented by points, polylines, or polygons. Each marker type has a default and a selected state.

  • Points are used to represent one or more business objects at a specific location. Point markers can be shown with icons, images, numbers, and letters to give additional information about the business object.
  • Polylines can represent linear assets, such as pipelines or water-distribution networks.
  • Polygons are used to represent areas, such as functional locations or regional boundaries.

 

 

 

 

Objects that are close together cluster together or apart depending on the zoom level of the map. As the user zooms out, markers merge into a single marker with a number count displaying how many objects are located within the cluster. As the user zooms in, the marker breaks apart into the individual objects. Objects that share one single geometry (location) are displayed as a single marker with the number count. If objects in a cluster are different types, the marker should be set to a neutral color. If objects in a cluster are all the same type, the marker should reflect the color set for that specific object type.

Users can select a cluster marker by tapping it and a list panel showing each object within the cluster should be displayed. Selecting one of the objects from the list opens the detail panel for that object.

Example of markers on map view
Example of markers on map view
Interacting with a map marker (using the design from SDK 6.1)
Interacting with a map marker (using the design from SDK 6.1)

D. Detail Panel

When a user selects a map marker, either a point, polyline or polygon, a detail panel slides in from the left to show additional information.

This panel displays information about the selected business object, and can contain general details, navigation direction information, analytics, quick actions, etc. As the panel is constructed in a modularized fashion, the specific combination of content types will vary across applications.

Examples of different content types to include are:

  • Title: This section should always be at the top of the panel. Include the object’s name with an optional subtitle. Use tint color for the title when it’s possible to drill down further to see more details about the object.
  • Additional Information: Use this section to display additional information about the object. Short texts, status icons, and system-generated tags may be used.
  • Directions Button: A directions button with or without the address may be used.
  • Actions Cell: Use this section to display quick actions related to the object.
Example of a detail panel in a map view
Example of a detail panel in a map view

Behavior and Interaction

From the Map view, the edit mode can be initiated two ways depending on if you are creating a new object or editing an existing object. The transition to edit mode will happen in place and preserve any filters and/or settings that have been set. 

 

Edit Existing Object

When editing an existing object, the edit mode is triggered from the action cell in the detail panel of the selected object. In edit mode, the selected object (point, polyline or polygon) is displayed and can be edited as needed. Once the object’s new geometry is saved, the user returns to the previous map view.

Edit: Create New Object

When creating a new object, the edit mode is initiated from the “Add” icon in the navigation bar. The user can choose from a list what type of object they want to create. Point, polyline, and polygon are supported. The transition to edit mode happens in place and preserves any filters and/or settings that have been set.

Once in edit mode, the user can tap on the locations where they want a point, or series of points, to be placed. Point locations can be changed with a tap and drag gesture, or via the address fields in the edit panel. After the object is created and saved, the user returns to the map view from where they started.

Creating a new map marker (using the design from SDK 6.1)
Creating a new map marker (using the design from SDK 6.1)

Map Routes

Routes are path indicators that contain multiple stop sites in the map.

Behavior

In their default state, routes display a call-out tag and stop sites. A route and its call-out tag are actionable for the user to select. Selecting a single route display the route’s stop sites’ as map markers. Each route’s information also appears in the detail panel as an object list.
A route can be selected either by tapping on the route itself, or by selecting the corresponding object in the detail panel. The remaining unselected routes change to a muted view on the map, while the selected route is displayed with labeled map markers indicating how many items are associated with each stop.
When a route is selected, the detail panel for the route slides in over the first panel. The new panel should show an object list with each stop on the route. The titles of the objects should match the names of each stop displayed on the route. From here, users can select one of the stops by tapping on one of the objects in the list, or by tapping a marker on the map. A new detail panel slides in with the information for the selected stop.

Once users have drilled down into a stop on the route, they can drill into one specific object from the list. Here, selecting a single object triggers the map to zoom in so that they are able to see the exact location.

For example, in the image to the right, choosing the object “Lease Well 113” from the list triggers the map to zoom into the location while having the object’s detail panel slide in with all the information associated with the selected object.

Interacting with a map route (using the design from SDK 6.1)
Interacting with a map route (using the design from SDK 6.1)

Adaptive Design

The map pattern is supported for both compact and regular widths, but some of the features are displayed differently. At this time, edit mode is only available in regular width.

Example 1 – Map Settings in compact is a full screen modal. In regular, settings is a modal window.

Adaptivity of the map settings screen
Adaptivity of the map settings screen

Example 2 – In compact view, the map legend is displayed at the bottom of the screen. When in landscape mode, the legend is anchored in the top left of the screen. In regular view, it always appears as a pop-over anchored to the floating toolbar.

Map views when the map legend is opened
Map views when the map legend is opened

Example 3 – In compact view, the detail panel slides up from the bottom of the screen. In regular, the detail panel slides in from the left and floats along the left side of the screen.

Example of map views when legend is opened
Example of map views when legend is opened

Resources

Development: Map View

SAP Fiori for Android: Map

List Report

A list report displays a large list of items of the same object type and allows users to take actions on them. This page type provides the functions of searching, sorting, filtering, and grouping the data in the large list.

Use a list report when there is a large list of items and the data is of the same object type. Do not use a list report when it contains different object types – for example, a mixed list of people profiles and tasks. The main functions of this page type are for users to search, group, or filter the list to narrow down the list.

List report in compact width (left) and regular width (right)
List report in compact width (left) and regular width (right)

Usage

Do

Use a list report when there is a large list of items and the data is of the same object type.

Don't

Do not use a list report when it contains different object types – for example, a mixed list of people profiles and tasks. The main functions of this page type are for users to search, group, or filter the list to narrow down the list.

Anatomy

Navigational Structure

A user typically navigates to a list report from an overview screen or an object screen. In most cases, a user can tap on each line item to view details of the object. This is normally a drill-down navigation. However, in use cases where there are no more details for each line item and the primary action is to edit the item, it is appropriate to use a modal in edit mode when the user taps on the line item.

Navigational structure for list report
Navigational structure for list report

Content Structure

A. Navigation Bar

Contains the list actions, including “Filter” (which combines sorting, grouping, and filtering functions), “Add New Item”, and “Edit” for group actions such as “Delete”.

B. Search Bar

May be either always visible or hidden to a user until they pull the list down.

C. Filter Feedback Bar (Optional)

Can display frequently used filters. The more common usage of the filter feedback bar is to show the users what filters have been applied when the list is filtered.

D. Content Area

Displays a list of items of the same type. It can either be a list of object cells or a table.

E. Toolbar (Optional)

If there are any more list-related actions besides “Filter”, “Add”, and “Edit”, use the toolbar for these actions. In compact view, the toolbar is used when the navigation bar doesn’t have enough space for all of the actions.

List report anatomy in compact width (left) and regular width (right)
List report anatomy in compact width (left) and regular width (right)

 

Content Guideline

A. Navigation Bar

Back Button

Use the title of the previous screen for the “Back” button label with a chevron. Avoid using an ambiguous word such as “Back”.

Screen Title

The screen title of the list report is composed of two parts: the name of the list and the counter in parentheses to reflect the number of items in the list. For example, “Tasks (100)” can be the screen title for a task list when using the list report page type.

Buttons

The navigation bar contains controls for managing the content area, such as “Filter”, “Edit”, and “Add”. Normally, the “Edit” action, if there is one, sits on the right side of the navigation bar with any other buttons beside it to the left. If there is no “Edit” action, the “Filter” button should be on the right side of the navigation bar.

In compact width, actions on the navigation bar should have a minimum of one icon and a maximum of two icons. If you require more actions, they must be placed on the toolbar.

In regular width, actions on the navigation bar should have a minimum of one icon and a maximum of three icons.

List report navigation bar
List report navigation bar

 

B. Search Bar

The search bar sits between the navigation bar and content area. It allows users to search for specific items. The search bar can be always visible to the users or can be hidden under the navigation bar until the users pull the list down.

See more in search bar.

List report search bar
List report search bar

 

C. Filter Feedback Bar

In the default list report floorplan, use the filter feedback bar only when there are frequently used filters to help users quickly narrow down the list.

If there are no frequently used filters, the filter feedback bar can be displayed after users sort, group, or filter the items on the list. Users can tap the interactive buttons to remove the active filter.

See more in filter feedback bar.

List report filter feedback bar
List report filter feedback bar

 

D. Content Area

The content area consists of either a list of object cells or a table to display the items.

Object cells

When using object cells in a list, ensure that all key information is properly presented in the object cells. In regular width, ensure that the information is balanced on the screen and avoid creating large empty areas. Tapping on one object cell navigates to its related object screen, which includes detailed information and actions for that object.

Table

When there is no data available in the content area, for example, when filters are applied with no matching results, inform users with the appropriate placeholder text.

List report content area
List report content area

 

E. Toolbar

The toolbar contains relevant actions buttons for the content area and may be used when there is not enough space for all of the buttons to fit in the navigation bar.

Buttons in the navigation bar and buttons in the toolbar are both list actions, which impact the whole list instead of one single item.

List report toolbar
List report toolbar

Behavior and Interaction

List Actions

Filter: The “Filter” button provides the sorting, grouping, and filtering options to narrow down the list.

Edit: The “Edit” button activates the multi-selection mode of the list. Users can select one or more items on the list and perform group actions, such as Delete and other line item actions.

Add: The “Add” button allows users to add a new line item of the same object type to the list. Typically, the add button on the list report floorplan doesn’t provide other functions.

Share: The “Share” button allows users to share the list through email and other supported channels in the app.

Other list actions: The app can have other list actions depends on the use cases. Keep in mind that these actions should impact the whole list, not just specific line items.

List report list actions
List report list actions

 

Line Item Actions

Line item actions directly impact the item rather than the whole list.

For example, Approve can be a line item action.

The maximum number of quick action buttons available via swipe is three. If there are more than three actions, include a “More” button that, when tapped, brings up an action sheet allowing users to make further selections. Use text or an icon with a label to communicate the purpose of each button and use consistent color coding.

List report line item actions
List report line item actions

 

Filtering

When filters or sorting are applied to the list, show the filter feedback bar on top of the list to indicate that this is a filtered list. The screen title will change to reflect the count of items on the current list and the count of items on the original list. A user can tap the buttons to remove the filters.

Filtering list report items
Filtering list report items

 

Grouping

A user can apply grouping to the list, at which point the group title and a count of the grouped items appear. Grouping doesn’t affect the screen title when no filters are applied. Please note that the filter feedback bar should reflect that grouping has been applied to the list.

Grouping list report items
Grouping list report items

Adaptive Design

A list report page type supports both regular and compact widths. Sections in the content area maintain the same vertical structure across compact and regular width layouts. Individual cells expand horizontally to fit the screen size. In regular width, detailed descriptions for each item may be provided.

Readable margins may also be applied to screens that use regular width in order to make content appear less spread out.

Compact width (left) and regular width (right)
Compact width (left) and regular width (right)

Resources

Development: FUIListFloorplan

Profile and Settings

The profile and settings page is a modal view in form of a container that holds various user and app specific settings and allows the user to customize their app experience.

Profile and settings example
Profile and settings example

Anatomy

Content Structure

A. Profile Header (Optional)

The profile header can contain items that provide more information about the user such as a profile image, user’s name, job title etc. If a profile image is not available, then the user’s initials can replace the image.

The header can also contain an action that the user can take immediately such as changing the profile image, starting or ending a work shift.

B. Settings

Settings may include user’s personal information, app specific preferences such as units of measure, permissions, and notification preferences. It allows the user to edit and personalize their experience in interacting with the app.

C. App Information

The app information section groups general information such as the “About” section, “Legal”, or feedback. If the app only has a version number in the “About” section, place it at the bottom of the main profile screen.

D. Sign out and Sync

A “Sign Out” button allows the user to sign out of the app. In demo mode, this button is used to exit the demo.

A “Manual Sync” button can also be included in this section.

Profile content structure
Profile content structure

Behavior and Interaction

Navigating to the Profile and Settings Page

The entry point for the profile and settings is located on the right side in the navigation bar. It’s recommended to place the user profile on the home screen only. 

Profile and settings on compact and regular screens
Profile and settings on compact and regular screens

Adaptive Design

The profile supports both compact and regular width. In compact, profile is a full-screen modal. However, in regular width, profile is a form sheet modal.

Full-screen modal in compact width (left) and form sheet modal in regular width (right)
Full-screen modal in compact width (left) and form sheet modal in regular width (right)

Resources

Related Components / Patterns: Navigation, Object Details, Profile Header

Sort & Filter Form

The sort and filter pattern allows users to narrow down results from a large set of data by setting complex sort and filter criteria in a fullscreen modal.

Sort and filter form in compact width (left) and regular width (right)
Sort and filter form in compact width (left) and regular width (right)

Usage

The sort and filter form should be used for large complex filters with a lot of sort and filter options if there is a large amount of data. It helps the user to focus on the filter task by providing more space to work with. The sort and filter form requires the user to perform more actions compared to using the filter feedback bar. For a more simple, contextual filter option, see Filter Feedback Bar.

Do
  • Keep the sort and filter form as short and uncluttered as possible.
  • Sorting and filtering is often used interchangeably. Sorting allows users to go through an entire set of data sorted by specific criteria. As filtering limits the data, only certain parts of data are displayed to the user.
  • If sorting is needed, it should come first, followed by filter options, with the most important or frequently used filters on top.
  • Filtering options should be concise and easy to understand.
  • Consider grouping filters that belong together.
Don't

Avoid putting everything into filters. Important top-level choices that are being made by almost all users are best being made upfront. It also declutters and simplifies the user experience.

Anatomy

The sort and filter form consists of reusable and modular sections. It can contain several filter form components, such as a filter form cell (single/multiple selection), slider, switch form cell, segmented control form cell, pickers, and order picker form cell.

A. Title and Search Results

Navigation bar title: “Filter”

Navigation bar subtitle: <name of filtered content/list, default “Results”> <number of filtered items> of <number of all items> The text in the subtitle should be automatically adopted to the content of the list that is filtered, for example, orders, products, equipment, notifications, etc., so that the user is always aware of what is being filtered.

B. Cancel

Closes the view without applying filters.

C. Reset

Resets all filter settings to the initial state.

D. Sort Components

Used for sorting the results by a certain logic. Sort should always have a preselected value as the default sorting method. Use the filter form cell for single selection and the order picker form cell for multiple sort criteria and sort direction.

D. Filter Components

Used to narrow down the list. Common controls include slider, switch form cell, filter form cell (single/multiple selection), segmented control form cell, pickers, and order picker form cell.

E. Action Toolbar with Result Button

Action toolbar with default label: Show <number of filtered items> <name of filtered content/list>, default “results”)

Sort and filter form anatomy
Sort and filter form anatomy

Behavior and Interaction

  1. Trigger Sort and Filter Form: The filter modal is usually triggered by tapping on the filter button on the navigation bar. As a secondary option, the filter button can be placed on the toolbar if there is no available space in the navigation bar. The filter button should be a text button.
  2. Sort and Filter Form: The sort and filter form is opened as a fullscreen modal and contains sort and filter options. Sort does not affect the number count.
  3. Filtered Results: As soon as a filter is applied, the filter button in the navigation bar should display the number of applied filters. This helps users to understand how many filters have been applied.
The filter button in navigation bar (left) triggers the sort and filter form (middle). The results button applies the filters and results are shown (right)
The filter button in navigation bar (left) triggers the sort and filter form (middle). The results button applies the filters and results are shown (right)

Adaptive Design

Sort and filter pattern in regular width appears as a popover.

Sort and filter form is shown as a fullscreen modal in compact width (left) and regular width it is placed in a popover (right)
Sort and filter form is shown as a fullscreen modal in compact width (left) and regular width it is placed in a popover (right)

Variations

Several form cell controls can be used with a sort and filter form, for example, filter form cell (single/multiple selection), stepper, slider, switch form cell, segmented control form cell, pickers, and order picker form cell.

Tip:

Different types of filters require different components. A switch allows users to set something on or off, a stepper increases or decreases a value, a range slider could be used to set a range, a filter form can set several textual filter options. Use the appropriate component that meets the users’ needs.

Don’t give the user extremely nuanced options to set filters. Too many detailed filter options only take up screen space.

Sort

Always put the sort option at the beginning of the filter view. Sorting allows users to change the order of the entire results. Popular sort options are sorting by alphabet, date, or rating.

If the data needs to be sorted by one criterion, use the filter form cell (single selection). If it is necessary to sort by multiple criteria where the sort order direction and the sequence of criteria matter, use the order picker form cell.

The sort form should always have a preselected value as the default sorting method.

Filter form cell (single selection) is used for sorting by one criterion (left). Order picker form cell has for more advanced sorting options (right)
Filter form cell (single selection) is used for sorting by one criterion (left). Order picker form cell has for more advanced sorting options (right)

Filter

Single Selection

Filter form cells are used to filter one or more values within a data category. If the text of value is too long to display within the cell, or when there are more than eight values to select from, use a list picker instead.

Multiple Selection

To allow users to select multiple values, use the multi-selection of the filter form cells.

Filter form cell single selection (left) and multiple selection (right)
Filter form cell single selection (left) and multiple selection (right)

Segmented Control

Use a segmented control button variant if the value of the label is not too long and there are less than three values to filter for. Single selection and multi-selection are available for this variation.

Segmented control button variant for up to three short filter values
Segmented control button variant for up to three short filter values

Switch

Use switches if the type of filter has two mutually exclusive states only – on and off. In some use cases, if a switch is set to “on,” the user can enter additional data, for example, by using a date and time picker.

Switch to turn a filter on or off
Switch to turn a filter on or off

Stepper

A stepper is useful to incrementally increase or decrease a selected value.

Stepper to increase or decrease a value
Stepper to increase or decrease a value

List Picker – Single Selection

A list picker is used if there are more than eight values to select from in a filter category. Use a value list if the number of values is dynamic or unpredictable.

User taps list picker form cell (left), makes single selection (center), returns to filter page (right)
User taps list picker form cell (left), makes single selection (center), returns to filter page (right)

List Picker – Multiple Selection

In some use cases, a list with a search bar is used to search through a large collection of values. If a list picker allows multiple selection, the selections may be grouped in a selected group to enable users to deselect without having to scroll through a large list.

User taps list picker form cell (left), makes multiple selections (center), returns to filter page (right)
User taps list picker form cell (left), makes multiple selections (center), returns to filter page (right)

Data Range

Picker

A picker can be used to select date and time, or to select a duration of time.

When inputting data sets such as setting the price range, “Min” value automatically affects the starting value of the “Max” picker.

Date picker (left) and duration picker (right)
Date picker (left) and duration picker (right)

Slider

A slider is best used when the minimum and maximum values are established. A slider form cell can be used when selecting a precise value is not important. If the exact value matters, use a picker control.

Use a range slider if the user should be able to select a range of values between a given range.

Slider (left) and range slider (right)
Slider (left) and range slider (right)

Resources

Search

The search pattern is used to locate information or objects within a large collection of values. There are two types of search.

Search on compact (left) and regular (right)
Search on compact (left) and regular (right)

 

Variations

Loading State

After the user types in their search query, the loading state will be displayed through skeleton loading while the search results are loading. 

Search loading state
Search loading state

Empty State

The empty state displays an error message if there are no matching search results.  

Search empty/failure state
Search empty/failure state

Recent Searches

Recent search history can be displayed when the user is ready to enter their search query. This provides easy access with quick links to previous searches in case the user wants to repeat a recent search

Recent search history during active state
Recent search history during active state

Search Suggestions and Bolded Exact Match 

As users type in their search query, matching or relevant search results/search suggestions through bolded exact match show up to provide them with quick links to relevant search results.  

Search suggestions with bolded exact matches
Search suggestions with bolded exact matches

Search with Quick Filter 

Search may be used in conjunction with the quick filter bar to help filter search results and narrow search results down. 

Quick filter search
Quick filter search

Search to Select

The search to select component is used to select multiple values while searching in a large collection of items. Its functionality is similar to a multi-select list picker but the selected values are located within the search field instead. To learn more, see List Picker and Search to Select. 

Search to select
Search to select

Resources

Development: FUISearchBar

SAP Fiori for Android: Search

Offline

Mobile applications do not always have the network connectivity needed to access real-time data. We therefore recommend providing an offline solution with your application that allows users to complete their tasks regardless of network connectivity.

An offline-enabled SAP Fiori application should regularly synchronize data with the server. Provide an additional manual way for the user to synchronize for situations where it is critical to synchronize data or retrieve data from the server. This is important for users that are entering areas with low or without network connectivity.

Offline banner example
Offline banner example

Usage

User Triggered Sync

A sync button allows the user to perform a manual sync when they wish to exchange data with the server. The placement of the sync button depends on the nature of the job. If the user is not expected to sync often, place the sync button in the profile or settings menu.

If the user needs access to the sync button regularly, surface the sync button as a global action. This may be on the Overview screen in a hierarchical navigation based application or at the first screen of every tab in a flat navigation-based application.

Example of a sync form cell button in setting screen
Example of a sync form cell button in setting screen
Example of a sync button as a right accessory on navigation bar
Example of a sync button as a right accessory on navigation bar

Feedback

In an offline application, it is important to communicate at all times to the user the state of network connectivity in the application as this could disrupt their work. There are a few ways this can be done through the application.

Status Bar

The status bar should change color in offline mode. It helps the user to recognize that the app is in offline mode on any screen in the app.

Sync Button

Display a spinning sync icon next to the Sync Button to communicate to the user that the app is syncing.

Timestamp

When the app finishes syncing, the timestamp under the sync button should refresh to reflect the last sync time.

When the user goes back to other app screens during the syncing process, a syncing indicator will appear under the header to show the progress.

Banners

Use an offline banner when the app goes offline. This can auto dismiss after a few seconds or be persistent.

Use sync banners if the user wishes to continue working after triggering the sync. Provide a way for the user to cancel the sync or close the banner. A spinning sync icon indicates that the sync is in progress. Once the sync is completed, communicate to the user that the sync was successful by replacing the text with “Sync Completed”.

 

 

Example of syncing banner
Example of syncing banner
Example of sync complete banner
Example of sync complete banner

Resources

Development: FUIOfflineBannerMessageView

Related Components/Patterns: Banners, Inline Errors

Feedback Indicators

Feedback provides users with timely responses to actions or informs them about the loading state or condition of content or processes. There are two types of feedback:

  • System feedback: provides system-generated feedback about the status of activities and processes, such as the network activity indicator, loading indicator.  
  • User-triggered feedback: provides information to the user in response to a specific action, such as the checkout indicator, progress and processing indicator, and the toast message.
Loading indicator, checkout indicator, processing indicator, and progress indicator (from left to right)
Loading indicator, checkout indicator, processing indicator, and progress indicator (from left to right)

Variations

System Feedback

Network Activity Indicator

An indeterminate progress view, also called activity indicator in iOS, is a standard feature of iOS, providing users with real-time feedback on network-related actions performed by their device. It is used when an iOS device is communicating with a network, such as loading a page, downloading content, or sending/receiving data to/from a server. The activity indicator provides visual feedback to the user that network operations are in progress. It automatically appears when network activity begins and disappears when the activity concludes. For more information, see Human Interface Guidelines – Progress Indicators.

Network activity indicator in the status bar
Network activity indicator in the status bar

Loading Indicator

A. Full-Screen Loading

The loading indicator appears in the center of the screen and informs the user that app content is currently loading. If possible, use an appropriate loading label to inform the user about what is loading.

B. Lazy Loading

When the user scrolls through a list, the inline loading indicator may appear below the current content to indicate that additional list content is being loaded.

C. Partial Loading

A loading indicator can be used when a part of the screen content needs to be updated or refreshed. The loading indicator is placed on the top of an overlay that covers the content. The indicator and the overlay disappear once loading is complete.

Loading indicator used in full screen (left), lazy loading (middle), and partial loading (right)
Loading indicator used in full screen (left), lazy loading (middle), and partial loading (right)

User-Triggered Feedback

Checkout Indicator

The checkout indicator communicates that data is being processed by the system. Checkout indicators should be used when the system is analyzing, sending, or syncing information based on an action the user has taken. It can be displayed with an optional label.

A checkout indicator can be used on a full screen or in a modal. A full-screen checkout indicator is recommended for major user tasks that require blocking other user actions and take the user to another page after the request is processed. A checkout indicator in a modal is used for same-screen loading when there is a major user task that requires blocking other user actions and takes the user to the same page after the request is processed.

Full-screen checkout indicator (left) and checkout indicator in a modal (right)
Full-screen checkout indicator (left) and checkout indicator in a modal (right)

There are three value states of the checkout indicator: Processing state, success state, and error/fail state. A request starts with the processing state, where the indicator keeps rotating during the process, and will turn into success or error/fail state depending on the result.

Checkout indicator processing state (left), success state (middle,) and error/fail state (right)
Checkout indicator processing state (left), success state (middle,) and error/fail state (right)

Progress and Processing Indicator

The progress and processing indicators help the user understand the status of an action. They provide different visuals for the different states. In this example, the user initiates downloading a document. Tapping on the “Stop” icon cancels the loading process.

Behavior of a progress indicator
Behavior of a progress indicator

A. Progress Indicator

The progress indicator shows the current stage of a process. It displays how long a process will take. It can include an optional button to allow the user to take an additional action during the process, such as stopping the download process.

Example of a progress indicator
Example of a progress indicator

B. Processing Indicator

The processing indicator is used when the request is being processed and the percentage of progress is unknown. It can be changed to a progress indicator once the progress starts.

Example of a processing indicator
Example of a processing indicator

Toast Message

The toast message is an indicator that appears briefly in the center of the screen in response to a user action. This type of feedback is intended to show that the user’s action has been processed and completed.

Example of a toast message
Example of a toast message

Resources

Development: Feedback Indicators

SAP Fiori for Android: Circular Progress Indicator, Snackbar

Error Handling

Errors are used to communicate to the user that something did not go the way it was intended to in the app. An error could occur either at the app level or at the user level. It’s important to present the appropriate type of error message and when possible, provide instructions to help the user recover quickly from the error state.

Variations

Error Banner

An error banner is used to notify a user when the state of a workflow is disrupted and may require attention. The user can dismiss the error banner by tapping on the “Close” button.

See also Banners.

Banner error message
Banner error message

 

Full-Page Error Message

A full-page error is generally used to communicate an error from the server. It blocks the user from viewing the screen and provides a way out for the user from the current workflow. Alway ensure that the error message communicates exactly what has gone wrong and provides a way for the user to continue working.

Full-page error message
Full-page error message

 

Inline Validation

An inline validation message is used only in a form sheet. It’s displayed directly with the input cell and explains the error with suggestions to correct the error.

See also Inline Validation.

Inline error messages in form submission
Inline error messages in form submission

Multi-Message Handling

When a screen contains multiple messages, the banner can show an overview of the type and number of messages, along with an action link to open a multi-message handling detail view in a bottom sheet (compact) or a popover (regular). The type is customizable. 

See also Multi-Message Handling.

Multi-message handling detail view on compact screen (left) and regular screen (right)
Multi-message handling detail view on compact screen (left) and regular screen (right)

 

Resources

Human Interface Guidelines: Feedback

Navigation

A proper navigation style offers a fast and clear path for users to finish their tasks. When designing an app, the first step should always be to evaluate the content structure of the app, and to then select the navigation style that will provide the clearest and most efficient user experience.

Hierarchical Navigation

Hierarchical navigation is suitable for apps based on a single content category. Apps that use a hierarchical navigation style typically start with an overview screen that provides users a high-level summary of the entire app. Users can then access more detailed information by drilling down into the available content subcategories.

Hierarchical navigation
Hierarchical navigation

Prevent Endless Loops

In a hierarchical navigation style, the user can only go back and forth step-by-step. To prevent the user from entering an endless loop, you may consider displaying some information in modals when the user is in a deeper level of the app. To learn more about child objects, see Object Details.

Example of hierarchical navigation
Example of hierarchical navigation

Flat Navigation

Flat navigation is suitable for apps that are based around multiple content categories. A tab bar is used in flat navigation, with each tab representing one content category. An optional search tab can be used to enable a global search feature. Inside each tab, the user can drill down in a step-by-step fashion to access increasingly detailed content.

Flat navigation
Flat navigation

Profile

In most cases, it’s recommended for you to place profile and settings on the right side of the navigation bar and ensure it’s accessible in each tab. If the profile is frequently viewed by the user, for example, checking the progress, the profile may be in its own tab. To read more, see Profile & Settings.

Example of flat navigation with profile on the lower right side
Example of flat navigation with profile on the lower right side

Resources

Create & Edit

The create & edit pattern is used to generate or update object. It is presented to the user via a modal and typically triggered by the create or edit actions on the navigation bar. The pattern may include a variety of combination of form cells to allow users to input information related to the object.

Create and edit form in compact width (left) and regular width (right)
Create and edit form in compact width (left) and regular width (right)

Usage

The create view is presented in a full-screen dialog on mobile devices or modal dialog on tablets. In the dialog, users are able to input the information related to the object they are creating.

Anatomy

Form cells within the create modal are grouped based on different types of data.

A. Navigation Bar

Contains the screen title and actions for users to save the data or exit the modal by tapping on the “Cancel” button.

B. Key information

Allows a user to input the most important information about the object. Some input fields may be set to required to create the object. In some cases, input fields may be pre-populated depending on if the object is linked to other objects.

C. Property

Appears after the key information section to gather additional information of the object. In general, one form cell is used for one property. Cells can be grouped together based on the information hierarchy of the object. Choose the form cell that best serves the data type.

D. Accessory

Found at the bottom of the modal. It may include elements such as notes and attachments.

Create and edit anatomy
Create and edit anatomy

Title Form Cell (FUITitleFormCell)

A title form cell allows the user to enter a short string of information into a single-line input field with fixed height. If inputting multiple lines of text are required, use a note form cell instead.

Prompt text should be displayed clearly and concisely to communicate the purpose of the input field, such as “Title” or “Name”. Vague directions should be avoided, such as “Tap to Write”. If necessary, the content in text fields can be pre-populated. To learn more, see text input.

Title form cell
Title form cell

Text Field (FUITextFieldFormCell)

When the modal contains a large number of text input fields, such as a form used to generate a new contact, we recommend using the text field component. This component displays the label of the input field to provide users a better understanding of the purpose of each entry. The text field component has a stacked variant and a single-line variant. Select the appropriate variant depending on the length of the content and the screen size you are designing for.

Read more about the text field in text input.

Text field form cell
Text field form cell

Key Value Form Cell (FUIKeyValueFormCell)

A key value form cell provides additional space for multi-line text entry. If additional accessories are present below the key value form cell, such as attachments, the height of the cell should be fixed, and a scroll bar will allow users to see the hidden content. If the key value form cell is the bottom-most component in the create pattern, the height of the cell can be flexible to grow downwards as the user inputs content into the cell. To learn more, see text input.

Key value form cell
Key value form cell

List Picker Form Cell

A list picker allows for single selection or multiple selection among values within a defined category, for example, to choose a specific project when creating a new task. A search bar may be incorporated to assist the user to locate the item. Search to select provides similar functionality and may be used for selecting multiple objects.

To learn more, see list picker or search to select

List picker form cell
List picker form cell

Pickers

Pickers allow the user to make a selection within a short  and predictable list of values. A date picker can be used for the user to select a date, a time in a day, or a combination of both. The default value of a date picker is usually the current date and time. To learn more, see pickers.

Picker form cell
Picker form cell

Segmented Control Form Cell

The segmented control form cell allows the user to quickly select from a small set of values by tapping on the buttons. It is typically used for single selection, and only contains short text strings. To learn more, see segmented control form cell.

Segmented control form cell
Segmented control form cell

Switch Form Cell

A switch is used when a property has only two mutually-exclusive states—either on or off. In some use cases, when a switch is set to ‘on,’ additional fields can be displayed for the user to input data. To learn more, see switch.

Switch form cell
Switch form cell

Attachments Form Cell

The attachments component allows the user to upload items such as images, video and audio files. Tapping on a thumbnail will display a preview of the attachment. To read more, see attachments.

Attachments form cell
Attachments form cell

 

Behavior and Interaction

Launch

The create view modal is usually triggered by tapping the “+” button on the navigation bar, which presents the user with the option of adding a new item to the current screen.

Create/Edit Modal

A modal containing various form cells will be presented to the user to fill out the information needed to create the object. The edit modal should generally be identical to the create modal to avoid confusion.

Feedback

After the user taps on the “Save” or “Done” button on the top right of the create modal, feedback should be provided to the user. Display a toast message to communicate to the user that the object has been created or updates have been saved.

User launches modal (left), filled out modal (center), toast message indicates completion (right)
User launches modal (left), filled out modal (center), toast message indicates completion (right)

Adaptive Design

The create & edit pattern is supported in both regular and compact width, and responsive across different devices.

Regular Width

In regular width, if the create pattern is triggered in a list report where there is only one action under the “+” icon, it should be displayed in a popover.

Create pattern in regular width as a popover
Create pattern in regular width as a popover

Form Sheet Modal

If there are multiple options behind the “+” action button, use the form sheet modal instead to present the create pattern. For further details, see modals.

Create pattern as a form sheet modal
Create pattern as a form sheet modal

Resources

Development: Create and Filter Patterns

SAP Fiori for Android: Create

Preview Table View

Preview table views are used to display a preview of a list and are populated with Table View Cells, which include object cells and contact cells.

Multiple preview table views can be stacked in a single-screen layout to provide quick access to different information. They are commonly found in the overview and object screens.

Preview table view in compact width (left) and regular width (right)
Preview table view in compact width (left) and regular width (right)

Usage

The lists displayed in a preview table view cannot be filtered. It is important to keep in mind that as the preview only displays a subset of a larger list, list actions must be avoided.

Anatomy

A. Section Header

The header includes a group label to describe what the content represents. It is not mandatory to include the header. To view variations of section header usage, see List Picker and Collection View section header.

B. Content Area

This is the area in which the table view cells are inserted.

C. Footer

The footer includes a “See All” label on the left with the number of items in the full list and a chevron icon on the right. The entire footer can be tapped to navigate to the full list. It is not mandatory to include the footer.

Anatomy of the preview table view
Anatomy of the preview table view

Behavior and Interaction

As the preview table view serves to provide a snippet of a large data set, it is recommended that no more than three content cells be displayed. The table cells that are displayed in the preview depend on the default sort and filter of the entire list.

Navigation

Tapping on a single table cell displayed in the preview table view navigates the user to the detail screen of the object. The “See All” cell leads the user to the list report that it is previewing.

Empty State

In cases where the content is generated by user interaction, the preview table view may have an ‘empty state’ until the user starts selecting/creating content to display. A good example of this is creating tasks in a Project Management app.

You can either choose to hide the preview table view entirely or if it is important to guide the user to generate this content, use the empty state of the preview table view with a label clearly communicating that there is no content yet. A quick action button cell maybe used to guide the user to add to the list.

Empty state of the preview table view
Empty state of the preview table view

Resources

Development: FUIObjectTableViewCell

SAP Fiori for Android: Object Cell

Related Components/Patterns: Object CellContact CellList Picker, Collection View

Object Details

The object details page is a collection of attributes surrounding one particular business object. It includes a header area, a content area, and an optional action area. In most cases, users can drill down into specific attributes within the object details.

Object details in compact width (left) and regular width (right)
Object details in compact width (left) and regular width (right)

Anatomy

Navigational Structure

The object details page is often used in the middle of a workflow to show a leading object that has multiple attributes. Objects can be accessed from an overview, a list report, or a related business object. Some object may have child objects which can be accessed via drill down from the object screen.

Navigational structure of an object details page
Navigational structure of an object details page

 

Content Structure

The object details page follows a task-based content hierarchy designed to improve the user’s ability to complete the job at hand. In this task-based content hierarchy, none of the sections or section groups are mandatory, but when they appear, they should follow the suggested sequence.

A. Header

The header section is the leading content section of an object page. It provides a quick view of the most important information about the intended business object. As the first and most important section, it is located in the header area to capture the user’s attention.

B. Contextual Content Section Group

The contextual section provides supplemental information about an object in addition to what is shown in the header. It gives the user a comprehensive understanding of the task at hand.

C. Instructional Content Section Group

The instructional section aims to help the user efficiently complete the current task. Content sections are prioritized based on the current scenario to maximize the user’s ability to complete the job.

D. Referential Content Section Group

The referential content sections provide relevant information around an object. The information here is not always essential to the current job, but immediate access is always available if required. Content sections are arranged by frequency of use.

E. Actions

An optional toolbar can be used to hold action buttons related to the object.

Object details anatomy
Object details anatomy

 

Content Priority

The placement of sections is based on their level of priority and their frequency of use relative to the user’s intended task. Based on the actual business scenario, however, this suggested placement can be overridden. For instance, sections can move up to more prominent locations if they fulfill the priority rule or the frequency rule.

Content priority of object details
Content priority of object details

Facets

To avoid creating screens that are very long and require excessive scrolling, display low-frequency content using facets. These facets sit as the last section on the screen, and users can drill down into them to access more detailed information.

Object details facets
Object details facets

 

Behavior and Interaction

Actions

Actions may be placed in the navigation bar of the object pattern. Common actions include “Add”, “Edit”, “Share”, or “Save”. A toolbar can be used to display additional actions if a tab bar is not present.

Add and edit actions in the navigation bar
Add and edit actions in the navigation bar

Edit

Editing details of an object is done by tapping on the “Edit” button on the navigation bar to trigger the edit mode. A modal with form cells appears to allow the user to make changes on the object.

View mode (left) and edit mode (right)
View mode (left) and edit mode (right)

 

Variations

Main Object

There are two common types of main objects:

Standard Object

The standard object is the most frequently used object layout. It includes an object header to display key information at the top of the screen. Examples of standard objects include work orders, tasks, issues, and parts.

Profile

The profile layout is used to display profile objects. It includes a profile header to display profile-specific information and actions.

Standard object layout (left) and profile layout (right)
Standard object layout (left) and profile layout (right)

 

Child Object

The child object details page is used to show additional information about one attribute of a business object. It is usually the last screen in a workflow, therefore there will be no further drill down options. However, a child object page can include actions and modal views to display further details.

Child objects from the same level in a workflow can be accessed by implementing the sibling navigation pattern.

To learn more about object hierarchy, see Hierarchy.

Child pages in compact width (left) and regular width (right)
Child pages in compact width (left) and regular width (right)

 

Resources

Development: FUIObjectFloorplan

Related Components/Patterns: Object Header, Profile Header, Sibling Navigation

Overview Page

The overview page type is a hub that provides previews of larger bodies of information sourced from different parts of the app. It contains details important to the user and provides quick access to items relevant to the user’s tasks. Use the Overview page if you want to highlight information that matters to the user. This can include data that the user needs to track, or key information for the user’s day-to-day work.

Overview page in compact width (left) and regular width (right)
Overview page in compact width (left) and regular width (right)

Anatomy

A. Exceptions and Urgent Items or Performance Indicators

Tapping on each number brings the user to a filtered list. You can display up to four numbers in regular width, and three in compact width. If more than three numbers need to be shown in compact width, consider including page controls for the user to swipe for more information. To learn more, see KPI Header.

In some cases, it will be helpful for the users to keep track of their progress or performance. In this example, while it’s important for the user to keep track of daily performance, it’s not critical to always have these metrics visible on screen. As the user scrolls, the header therefore does not stick to the top of the screen, instead making way for other content to fill this valuable space.

B. Previews of Selected Facets

The preview section provides quick access to objects that require attention as well as the most frequently-viewed objects. This section should always be contextually relevant to the user’s needs. Instead of providing previews of all customers, for example, in this example it is more useful for the user to see only recent customers.

C. Facets

The facets provide a menu that contains links to every object in the app. This section is always placed at the bottom of the overview page.

Anatomy of an overview page
Anatomy of an overview page

 

Behavior and Interaction

Navigation Bar

Actions taken in the overview page are generally global in effect. The user may be able to search within the whole app, for example, or make a change to user settings. Other actions may be included, depending on the use case.

Actions in the navigation bar of an Overview page have global effects
Actions in the navigation bar of an Overview page have global effects

Variations

Navigational Structure

Flat Navigation

In general, the overview page is most common in apps that use a hierarchical navigation style. When using the overview page within a flat navigation style, make sure the information that is presented to the user is not simply duplicated from other tabs.

Overview pages with a flat navigational structure
Overview pages with a flat navigational structure

Facets

The facet section provides an entry point to every object in the app. Users may have access to full lists of less frequently used objects by tapping on each item. Most frequently used object types should be surfaced in preview table view sections instead of relying on the facet section. This pattern provides the user with more visibility of objects comparing to grouping object in a hamburger menu.

Overview page with a facet section on iPad
Overview page with a facet section on iPad