Edit

Share via


Tab List modern control in canvas apps

A tabbed navigation control that users can use to switch between different content sections by clicking tab headers.

Description

The Tab List modern control enables you to create intuitive tabbed navigation interfaces in canvas apps. Users can switch between different content sections by selecting tab headers, making it ideal for organizing related information or features within a single screen.

This control serves as a navigation component that you combine with other controls to build comprehensive tabbed experiences. When users select a tab, you can use conditional visibility to show or hide content sections accordingly. The Tab List control offers flexible styling options and accessibility features to ensure your tabbed interfaces work effectively for all users.

Key capabilities:

  • Display multiple clickable tab headers from a data source
  • Support various visual styles including transparent, subtle, underline, and filled appearances
  • Provide keyboard navigation and screen reader support
  • Enable responsive alignment and sizing options
  • Trigger events when users interact with tabs

Use the Tab List control when you need to organize content into logical sections that users can navigate independently, such as product details, dashboard views, or settings categories.

Key properties for this control are Items, Default, Selected, and Appearance.

General

Items – The data source that provides the list of tabs to display. Can be a table, collection, or list of values. Each item becomes a clickable tab header.

Default – The tab that is selected by default when the control first loads. Must match an item from the Items source.

Selected – The currently selected tab (output property). Use this in formulas to reference which tab the user chooses and to control visibility of content sections.

Visible – Whether the control appears or is hidden. Use a Power Fx formula to show or hide the control based on app state.

Behavior

OnChange – How the app responds when the user clicks a different tab. This event fires every time the selected tab changes. Use this value to update variables, load data, or track navigation.

OnSelect – How the app responds when the user clicks any tab (including the currently selected one). Use this value for additional interactions beyond navigation.

DisplayMode – Whether the control allows user input (Edit), only displays data (View), or is disabled (Disabled). In View mode, tabs are displayed but can't be clicked.

Size and position

Align – The horizontal alignment of tab text within each tab button. Accepts Align enum values:

Value Description
Align.Left Aligns text to the left edge
Align.Center Centers text horizontally (default)
Align.Right Aligns text to the right edge

Alignment – The alignment and positioning of the entire tab list. Accepts TabListAlignment enum values:

Value Description
TabListAlignment.Start Aligns tabs to the left or start edge
TabListAlignment.Center Centers the tab list (default)
TabListAlignment.End Aligns tabs to the right or end edge

X – Distance between the left edge of the control and the left edge of its parent container. If the control has no parent container, the screen acts as the parent container.

Y – Distance between the top edge of the control and the top edge of its parent container. If the control has no parent container, the screen acts as the parent container.

Width – Distance between the control's left and right edges. Default is 300.

Height – Distance between the control's top and bottom edges. Default is 60.

PaddingTop – Distance between the tab text and the top edge of each tab button.

PaddingBottom – Distance between the tab text and the bottom edge of each tab button.

PaddingLeft – Distance between the tab text and the left edge of each tab button.

PaddingRight – Distance between the tab text and the right edge of each tab button.

Style and theme

Appearance – The visual style of the tabs. Accepts TabListAppearance enum values:

Value Description
TabListAppearance.Transparent Transparent background with text only
TabListAppearance.Subtle Subtle background with minimal styling
TabListAppearance.Underline Tabs with underline indicator for selection
TabListAppearance.Filled Filled tab buttons with solid backgrounds

Font – The name of the font family for the tab text.

Size – The font size of the tab text, in points.

Color – The color of the tab text in the control.

FontWeight – The weight (thickness) of the tab text. Accepts FontWeight enum values:

Value Description
FontWeight.Bold Bold text
FontWeight.Semibold Semibold text
FontWeight.Normal Normal weight (default)
FontWeight.Lighter Lighter weight

Italic – Whether the tab text appears in italic style.

Underline – Whether a line appears under the tab text.

Strikethrough – Whether a line appears through the middle of the tab text.

BorderColor – The color of the borders around tabs (when applicable based on Appearance).

BorderStyle – The style of the tab borders. Accepts BorderStyle enum values: BorderStyle.Solid, BorderStyle.Dashed, BorderStyle.Dotted, or BorderStyle.None.

BorderThickness – The thickness of the tab borders in pixels.

RadiusTopLeft – The corner radius for the top-left corner of tab buttons.

RadiusTopRight – The corner radius for the top-right corner of tab buttons.

RadiusBottomLeft – The corner radius for the bottom-left corner of tab buttons.

RadiusBottomRight – The corner radius for the bottom-right corner of tab buttons.

Accessibility

AccessibleLabel – A label for screen readers to announce what the tab list represents. It should describe the category or sections being navigated (for example, "Product information sections" or "Report views").

ContentLanguage – The language used for the tab text. If you don't specify this property, the app settings provide the value.

Example

The following YAML example shows tab list controls with different appearance styles:

- ProductTabs:
    Control: ModernTabList@1.0.0
    Properties:
      Items: =["Overview", "Specifications", "Reviews", "Support"]
      Default: ="Overview"
      Appearance: =TabListAppearance.Underline
      Alignment: =TabListAlignment.Center
      Size: =16
      FontWeight: =FontWeight.Semibold
      AccessibleLabel: ="Product information tabs"
      X: =40
      Y: =100
      Width: =600
      Height: =60

- DashboardTabs:
    Control: ModernTabList@1.0.0
    Properties:
      Items: =["Sales", "Inventory", "Reports"]
      Default: ="Sales"
      Appearance: =TabListAppearance.Filled
      Alignment: =TabListAlignment.Start
      Size: =15
      AccessibleLabel: ="Dashboard section tabs"
      X: =40
      Y: =180
      Width: =600
      Height: =60

- SettingsTabs:
    Control: ModernTabList@1.0.0
    Properties:
      Items: =["Account", "Privacy", "Notifications", "Billing"]
      Default: ="Account"
      Appearance: =TabListAppearance.Subtle
      Alignment: =TabListAlignment.Start
      Size: =14
      Align: =Align.Left
      AccessibleLabel: ="Settings categories"
      X: =40
      Y: =260
      Width: =250
      Height: =60

Recent updates

The updated version of the Tab list modern control includes improvements and behavior change.

Property renames

The following properties are renamed. Update any formulas in your app that reference the old property names.

Previous property New property
FontColor Color
FontSize Size
FontItalic Italic
FontStrikethrough Strikethrough
FontUnderline Underline
BorderRadius RadiusTopLeft, RadiusTopRight, RadiusBottomLeft, RadiusBottomRight

Bug fixes and improvements

  • Appearance property: The new Appearance property with four visual styles (Transparent, Subtle, Underline, Filled) gives you more design flexibility for tabbed interfaces.
  • Item order preserved: Tabs now display in the exact order specified in the Items property. Previously, the control sometimes reordered tabs unexpectedly.
  • Items refresh fixed: Updating the Items property now automatically refreshes the tab list. Previously, changes to Items didn't always trigger a visual update.
  • Default property: The new Default property allows you to specify which tab is selected when the control loads.
  • Alignment control: The new Alignment property controls the positioning of the entire tab list (start, center, end).
  • Improved tab sizing: Tab buttons now size more consistently and responsively.

Best practices

  • Clear tab labels: Use short, descriptive labels for tabs (one or two words). Avoid long phrases that make tabs too wide.
  • Reasonable tab count: Use two to seven tabs for optimal usability. For more sections, consider alternative navigation patterns like a tree view or menu.
  • Default selection: Always set a Default value to ensure a tab is selected when the control loads.
  • Conditional visibility: Use the Selected output property to control visibility of content sections.
    ContentSection.Visible = TabList1.Selected.Value = "Overview"
    
  • Accessible labels: Provide descriptive AccessibleLabel text that explains what the tabs navigate between.
  • Consistent appearance: Use the same Appearance style for all tab lists in your app for visual consistency.
  • OnChange for data loading: Use OnChange to load data or update variables when tabs change, improving performance by loading only what's needed.

Limitations

  • The Tab List control provides navigation only - you must manually control content visibility using the Selected property.
  • Very small or very large width and height values might not be fully respected by the control.
  • Tab buttons don't automatically scroll horizontally if there are too many tabs to fit the width.

See also