Principles Foundation Accessibility Design System Guidelines Deutsch Français Italiano English Our design principles User-centred Recognisable Inclusive Reduced Holistic Self-explanatory Task-oriented Appropriate SBB Brand portal Logo Digital clock Rights of use Base colors Additional colors Off brand colors Icons Timetable icons Pictograms About accessibility Über diesen Guide Contact Further information Product Owner User Research Interaction Design Visual Design Development Content Design Testing What is a design system? Designing Coding FAQ Help Process Contribution Contact Overview Base Components Overview Releases Design Tokens Components Overview Base Informations Overview Base Components Overview App Icons Power-Apps Digital banner ads SAP Design Guidelines AI Design: Basics Toggle Info

What does the component do?

A toggle enables users to switch between two states, e.g. "Off" and "On".

When should the component be used?

  • To provide a quick and easy way to activate or deactivate a function.
  • When users need to change a setting that has an immediate effect.
  • To present binary options clearly and intuitively.

Rules

  • Avoid placing too many toggles on a page to ensure clarity and maintain usability.
ToggleOption
Anatomy

Anatomy of the component


Number Type Description Optional Info
1 Component sbb-toggle-option No
1a Component sbb-icon Yes
1b Text Label Yes
Demo

Playground

Bern, Bahnhof Zürich
Sizes M S Disabled No Yes Width Dynamic 50 : 50 Mode (System Setting) Light Dark Background White Midnight Milk Charcoal Cloud Iron Midnight White Charcoal Milk Iron Cloud
Size M
Size S
Disabled
Disabled Size S
Even
Even Size S
Label And Icon
Label And Icon Size S
Label And Icon Slotted
Icons Only
Icons Only Size S
Icons Only Slotted
Dynamic Width
Dynamic Width Size S
Copy HTML to clipboard.
Implementation

The sbb-toggle component is a wrapper for a couple of sbb-toggle-options
that can be selected by the user; it is useful for switching between views within the content.

Their behavior is similar to sbb-tab-group
or sbb-radio-button-group,
where selecting an option deselects the previously selected one.

<sbb-toggle value="Value 1">
  <sbb-toggle-option value="Value 1">Bern</sbb-toggle-option>
  <sbb-toggle-option value="Value 2">Zürich</sbb-toggle-option>
</sbb-toggle>

States

The component can be displayed in disabled state using the self-named property.

<sbb-toggle disabled> ... </sbb-toggle>

Style

The even property can be used to let the component expand to the parent component or adapt to the label's width.

The component has two different sizes, s and m (default), which can be set using the size property.

<sbb-toggle size="s" even> ... </sbb-toggle>

Complex Values

This component supports any types of values, including complex objects.
The type can be specified using the generic type parameter T of SbbToggle<T>.

const values = [
  { value: 'value 1', name: 'Option 1' },
  { value: 'value 2', name: 'Option 2' },
];
<sbb-toggle .value="${values[0]}" name="name">
  <sbb-toggle-option .value="${values[0]}">Option 1</sbb-toggle-option>
  <sbb-toggle-option .value="${values[1]}">Option 2</sbb-toggle-option>
</sbb-toggle>

Properties

Name Attribute Privacy Type Default Description
disabled disabled public boolean false Whether the component is disabled.
even even public boolean false If true, set the width of the component fixed; if false, the width is dynamic based on the label of the sbb-toggle-option.
form - public HTMLFormElement | null Returns the form owner of this element.
name name public string Name of the form element. Will be read from name attribute.
options - public SbbToggleOptionElement<T>[] The child instances of sbb-toggle-option as an array.
size size public 's' | 'm' 'm' / 's' (lean) Size variant, either m or s.
validationMessage - public string Returns the current error message, if available, which corresponds to the current validation state. Please note that only one message is returned at a time (e.g. if multiple validity states are invalid, only the chronologically first one is returned until it is fixed, at which point the next message might be returned, if it is still applicable). Also, a custom validity message (see below) has precedence over native validation messages.
validity - public ValidityState Returns the ValidityState object for this element.
value value public (T = string) | null The value of the toggle. It needs to be mutable since it is updated whenever a new option is selected (see the onToggleOptionSelect() method).
willValidate - public boolean Returns true if this element will be validated when the form is submitted; false otherwise.

Methods

Name Privacy Description Parameters Return Inherited From
checkValidity public Returns true if this element has no validity problems; false otherwise. Fires an invalid event at the element in the latter case. boolean SbbFormAssociatedMixin
reportValidity public Returns true if this element has no validity problems; otherwise, returns false, fires an invalid event at the element, and (if the event isn't canceled) reports the problem to the user. boolean SbbFormAssociatedMixin
setCustomValidity public Sets the custom validity message for this element. Use the empty string to indicate that the element does not have a custom validity error. message: string void SbbFormAssociatedMixin

Events

Name Type Description Inherited From
change Event The change event is fired when the user modifies the element's value. Unlike the input event, the change event is not necessarily fired for each alteration to an element's value.

Slots

Name Description
Use the unnamed slot to add <sbb-toggle-option> elements to the toggle.