Skip to main content

Segmented

The Segmented component is a horizontal control made of multiple segments, each segment functioning as a button.

Usage

In single selection mode the functionality is similar to the radio buttons, where selecting one will deselect all others.

<!-- Icon only -->
<mbsc-segmented-group name="my-group" [(ngModel)]="myChoice">
<mbsc-segmented value="1" icon="remove"></mbsc-segmented>
<mbsc-segmented value="2" icon="pencil"></mbsc-segmented>
<mbsc-segmented value="3" icon="plus"></mbsc-segmented>
</mbsc-segmented-group>

<!-- Icon and text -->
<mbsc-segmented-group name="my-group" [(ngModel)]="myChoice">
<mbsc-segmented value="1" startIcon="remove">Option 1</mbsc-segmented>
<mbsc-segmented value="2" startIcon="pencil">Option 2</mbsc-segmented>
<mbsc-segmented value="3" startIcon="plus">Option 3</mbsc-segmented>
</mbsc-segmented-group>

Value binding

Segmetned components can be bound to a string value using either the [(ngModel)] or the formControlName directives. These directives can be used individually on every segmented component or can be applied to the segmented group.

Single selection

Use the value and onChange props to set a value to the whole segmented group.

<mbsc-segmented-group name="my-range" [(ngModel)]="myRange">
<mbsc-segmented value="day">Day</mbsc-segmented>
<mbsc-segmented value="week">Week</mbsc-segmented>
<mbsc-segmented value="month">Month</mbsc-segmented>
<mbsc-segmented value="year">Year</mbsc-segmented>
</mbsc-segmented-group>

Multiple selection

In multiple selection mode segments can be selected and de-selected independently from each other.

<mbsc-segmented-group select="multiple" name="multi">
<mbsc-segmented *ngFor="let item of myGroupItems" [(ngModel)]="item.checked">{{item.text}}</mbsc-segmented>
</mbsc-segmented-group>
import { Component } from '@angular/core';

@Component({...})
export class MyComponent {
myGroupItems: Array<{ checked: boolean, text: string, value: string }> = [
{ checked: false, text: 'S', value: 'sunday' },
{ checked: true, text: 'M', value: 'monday' },
{ checked: false, text: 'T', value: 'tuesday' },
{ checked: false, text: 'W', value: 'wednesday' },
{ checked: true, text: 'T', value: 'thursday' },
{ checked: false, text: 'F', value: 'friday' },
{ checked: false, text: 'S',value: 'saturday' }
];
}

Options

Explore the following API options that help you easily configure the Segmented component.

ariaLabel

string

Specifies the accessible name of the segmented button. Recommended for icon-only buttons.

Default value: undefined

color

"success" | "light" | "dark" | "primary" | "secondary" | "danger" | "warning" | "info"

Specifies the predefined color of the segmented button.

Default value: undefined

cssClass

string

Specifies a custom CSS class for the component.

Default value: undefined

description

string

Specifies the description text of the segmented button.

Default value: undefined

disabled

boolean

Specifies the disabled state of the segmented button.

Default value: false

endIcon

any

Specifies the icon which will be displayed at the end of the segmented button. Use the startIcon option for specifying an icon at the start.

Default value: undefined

icon

any

Specifies the icon for an icon-only segmented button.

Default value: undefined

id

string

Specifies the id of the segmented button.

Default value: undefined

label

string

Specifies the label of the segmented button.

Default value: undefined

name

string

Specifies the name of the segmented button.

Default value: undefined

startIcon

any

Specifies the icon which will be displayed at the start of the segmented button. Use the endIcon option for specifying an icon at the end.

Default value: undefined

theme

string

Specifies the visual appearance of the component.

If it is 'auto' or undefined, the theme will automatically be chosen based on the platform. If custom themes are also present, they will take precedence over the built in themes, e.g. if there's an iOS based custom theme, it will be chosen on the iOS platform instead of the default iOS theme.

Supplied themes:

  • 'ios' - iOS theme
  • 'material' - Material theme
  • 'windows' - Windows theme

It's possible to modify theme colors or create custom themes.

info

Make sure that the theme you set is included in the downloaded package.

Default value: undefined

themeVariant

"auto" | "light" | "dark"

Controls which variant of the theme will be used (light or dark).

Possible values:

  • 'light' - Use the light variant of the theme.
  • 'dark' - Use the dark variant of the theme.
  • 'auto' or undefined - Detect the preferred system theme on devices where this is supported.

To use the option with custom themes, make sure to create two custom themes, where the dark version has the same name as the light one, suffixed with '-dark', e.g.: 'my-theme' and 'my-theme-dark'.

Default value: undefined

Events

The Segmented component ships with different event hooks for deep customization. Events are triggered through the lifecycle of the component where you can tie in custom functionality and code.

onDestroy

(args: any, inst: any) => void

Triggered when the component is destroyed.

Parameters:

  • args - The event argument object.

  • inst - The component instance.

onInit

(args: any, inst: any) => void

Triggered when the component is initialized.

Parameters:

  • args - The event argument object.

  • inst - The component instance.

Localization

The Segmented component is fully localized. This covers date and time format, button copy, rtl and more.

locale

MbscLocale

Sets the language of the component. The locale object contains all the translations for a given language. The built in language modules are listed below. If a language is not listed, it can be provided as a custom language module.

Supported values:

  • Arabic: localeAr, 'ar'
  • Bulgarian: localeBg, 'bg'
  • Catalan: localeCa, 'ca'
  • Czech: localeCs, 'cs'
  • Chinese: localeZh, 'zh'
  • Croatian: localeHr, 'hr'
  • Danish: localeDa, 'da'
  • Dutch: localeNl, 'nl'
  • English: localeEn or undefined, 'en'
  • English (UK): localeEnGB, 'en-GB'
  • Farsi: localeFa, 'fa'
  • German: localeDe, 'de'
  • Greek: localeEl, 'el'
  • Spanish: localeEs, 'es'
  • Finnish: localeFi, 'fi'
  • French: localeFr, 'fr'
  • Hebrew: localeHe, 'he'
  • Hindi: localeHi, 'hi'
  • Hungarian: localeHu, 'hu'
  • Italian: localeIt, 'it'
  • Japanese: localeJa, 'ja'
  • Korean: localeKo, 'ko'
  • Lithuanian: localeLt, 'lt'
  • Norwegian: localeNo, 'no'
  • Polish: localePl, 'pl'
  • Portuguese (Brazilian): localePtBR, 'pt-BR'
  • Portuguese (European): localePtPT, 'pt-PT'
  • Romanian: localeRo, 'ro'
  • Russian: localeRu, 'ru'
  • Russian (UA): localeRuUA, 'ru-UA'
  • Slovak: localeSk, 'sk'
  • Serbian: localeSr, 'sr'
  • Swedish: localeSv, 'sv'
  • Thai: localeTh, 'th'
  • Turkish: localeTr, 'tr'
  • Ukrainian: localeUa, 'ua'

Default value: undefined

rtl

boolean

Enables right-to-left display.

Default value: false