Skip to main content

What are you looking for?

Try searching for…

Components

Toggle group

Toggle group groups related options. The component consists of a group of buttons that are connected, where only one button can be selected at a time.

Press Enter to start editing
Unable to parse html
const PreviewEn = () => {
  return (
    <ToggleGroup aria-label='Filter' defaultValue='inbox'>
      <ToggleGroup.Item value='inbox'>Inbox</ToggleGroup.Item>
      <ToggleGroup.Item value='drafts'>Drafts</ToggleGroup.Item>
      <ToggleGroup.Item value='archive'>Archive</ToggleGroup.Item>
      <ToggleGroup.Item value='sent'>Sent</ToggleGroup.Item>
    </ToggleGroup>
  );
};

render(<PreviewEn />)

Usage

If you are using @digdir/designsystemet-web, you can implement toggle group by using the focusgroup="radiogroup" and aria-label attributes. Note that focusgroup is a upcoming W3C standard, currently only supported in Chrome. The design system automatically adds a polyfill to provide support in all browsers.

Old way with <button>

With this approach, you need to handle keyboard navigation and ARIA roles yourself. You can read about what you need to do to implement this in the accessibility documentation. Each button in the group is a <button> with class name ds-button and aria-checked which indicates whether the button is selected or not.

CSS variables and data attributes

Sizes are controlled with data-size and colors with data-color. The component will inherit from the closest parent where these are set.

CSS Variables
NameValue
--dsc-button-backgroundtransparent
--dsc-button-background--activevar(--ds-color-surface-active)
--dsc-button-background--hovervar(--ds-color-surface-hover)
--dsc-button-border-colorvar(--ds-color-border-default)
--dsc-button-colorinherit
--dsc-button-color--activevar(--dsc-button-color)
--dsc-button-color--hovervar(--ds-color-text-default)
--dsc-togglegroup-backgroundvar(--ds-color-surface-default)
--dsc-togglegroup-border-colorvar(--ds-color-border-default)
--dsc-togglegroup-border-radiusvar(--ds-border-radius-default)
--dsc-togglegroup-border-stylesolid
--dsc-togglegroup-border-widthvar(--ds-border-width-default)
--dsc-togglegroup-button-sizevar(--ds-size-12)
--dsc-togglegroup-colorvar(--ds-color-text-default)
--dsc-togglegroup-label""
--dsc-togglegroup-spacing0
Data Attributes
NameValue
data-icon
data-variantsecondary, tertiary

React

Controlled example

ToggleGroup

variant
Description

Specify which variant to use

Type
"primary" | "secondary"
Default
'primary'
value
Description

Controlled state for `ToggleGroup` component.

Type
string
defaultValue
Description

Default value.

Type
string
onChange
Description

Callback with selected `ToggleGroupItem` `value`

Type
((value: string) => void)
name
Description

Form element name

Type
string
data-toggle-group
Description

Toggle group label for accessibility @deprecated Use aria-label or aria-labelledby instead.

Type
string
aria-label
Type
string
aria-labelledby
Type
string
NameTypeDefaultDescription
variant"primary" | "secondary"'primary'

Specify which variant to use

valuestring-

Controlled state for `ToggleGroup` component.

defaultValuestring-

Default value.

onChange((value: string) => void)-

Callback with selected `ToggleGroupItem` `value`

namestring-

Form element name

data-toggle-groupstring-

Toggle group label for accessibility @deprecated Use aria-label or aria-labelledby instead.

aria-labelstring-

-

aria-labelledbystring-

-

ToggleGroupItem

value
Description

The value of the ToggleGroupItem. Generates a random value if not set.

Type
string | (string & readonly string[])
icon
Description

@deprecated Icon prop is deprecated

Type
boolean
NameTypeDefaultDescription
valuestring | (string & readonly string[])-

The value of the ToggleGroupItem. Generates a random value if not set.

iconboolean-

@deprecated Icon prop is deprecated

Edit this page on github.com (opens in a new tab)