ToggleButton
ToggleButton is a button that stays pressed. Instead of firing an action and forgetting it, it holds an on/off state and shows which one it is currently in. It suits the kind of setting that belongs right next to the thing it affects - muting a microphone, bolding a selection, pinning an item - where a toolbar button reads better than a checkbox or a switch. Its text, icon, color and variant can all differ between the two states, it can stay in a loading state while an async toggle is being saved, and it exposes its state to screen readers through aria-pressed.
Usage
Basic
<BitToggleButton>Microphone</BitToggleButton>Variant
<BitToggleButton Variant="BitVariant.Fill">Fill</BitToggleButton>
<BitToggleButton Variant="BitVariant.Outline">Outline</BitToggleButton>
<BitToggleButton Variant="BitVariant.Text">Text</BitToggleButton>
<BitToggleButton Variant="BitVariant.Fill" IsEnabled="false">Fill</BitToggleButton>
<BitToggleButton Variant="BitVariant.Outline" IsEnabled="false">Outline</BitToggleButton>
<BitToggleButton Variant="BitVariant.Text" IsEnabled="false">Text</BitToggleButton>
<BitToggleButton IsEnabled="false" AllowDisabledFocus="false">Not focusable</BitToggleButton>Texts & Titles
<BitToggleButton Text="Microphone" />
<BitToggleButton OnText="Muted" OffText="Unmuted" />
<BitToggleButton IconOnly Title="Microphone" AriaLabel="Microphone"
IconName="@BitIconName.Microphone" />
<BitToggleButton IconOnly AriaLabel="Mute"
OnTitle="Click to unmute" OnIconName="@BitIconName.MicOff"
OffTitle="Click to mute" OffIconName="@BitIconName.Microphone" />Icons
<BitToggleButton Text="Microphone" IconName="@BitIconName.Microphone" />
<BitToggleButton OnText="Muted" OnIconName="@BitIconName.MicOff"
OffText="Unmuted" OffIconName="@BitIconName.Microphone" />
<BitToggleButton IconPosition="BitIconPosition.Start" Text="Start" IconName="@BitIconName.Microphone" />
<BitToggleButton IconPosition="BitIconPosition.End" Text="End" IconName="@BitIconName.Microphone" />
<BitToggleButton IconName="@BitIconName.Microphone" />
<BitToggleButton OnIconName="@BitIconName.MicOff" OffIconName="@BitIconName.Microphone" />
<BitToggleButton IconOnly IconName="@BitIconName.Microphone" Text="Microphone" />
<BitToggleButton IconOnly
OnText="Muted" OnIconName="@BitIconName.MicOff"
OffText="Unmuted" OffIconName="@BitIconName.Microphone" />Checked appearance
<BitToggleButton OnColor="BitColor.Success" OffColor="BitColor.Error"
OnText="Recording" OnIconName="@BitIconName.CircleFill"
OffText="Stopped" OffIconName="@BitIconName.CircleStopSolid" />
<BitToggleButton OnVariant="BitVariant.Fill" OffVariant="BitVariant.Outline"
OnText="Following" OffText="Follow" />
<BitToggleButton Color="BitColor.Info"
OnColor="BitColor.Warning" OnVariant="BitVariant.Fill" OffVariant="BitVariant.Text"
OnText="Notifications muted" OnIconName="@BitIconName.RingerOff"
OffText="Notifications on" OffIconName="@BitIconName.Ringer" />CheckMark
<BitToggleButton ShowCheckMark Variant="BitVariant.Outline" Text="Bold" />
<BitToggleButton ShowCheckMark Variant="BitVariant.Outline" Text="Italic" />
<BitToggleButton ShowCheckMark FixedCheckMark Variant="BitVariant.Outline" Text="Bold" />
<BitToggleButton ShowCheckMark FixedCheckMark Variant="BitVariant.Outline" Text="Italic" />
<BitToggleButton ShowCheckMark FixedCheckMark CheckMarkIconName="@BitIconName.FavoriteStarFill"
Variant="BitVariant.Outline" Color="BitColor.Warning" Text="Favorite" />Binding
<BitToggleButton DefaultIsChecked="true" OnText="Muted" OnIconName="@BitIconName.MicOff" OffText="Unmuted" OffIconName="@BitIconName.Microphone" /> <BitToggleButton @bind-IsChecked="twoWayBoundValue" Text="@(twoWayBoundValue ? "Muted" : "Unmuted")" IconName="@(twoWayBoundValue ? BitIconName.MicOff : BitIconName.Microphone)" /> <BitCheckbox Label="Checked Toggle Button" @bind-Value="twoWayBoundValue" /> <BitToggleButton OnChange="v => onChangeValue = v" OnText="Muted" OnIconName="@BitIconName.MicOff" OffText="Unmuted" OffIconName="@BitIconName.Microphone" /> <div>Check status: @onChangeValue</div> <BitToggleButton @ref="programmaticToggleRef" OnText="Muted" OffText="Unmuted" /> <BitButton Variant="BitVariant.Outline" OnClick="() => programmaticToggleRef.ToggleAsync()">Toggle it</BitButton> <BitButton Variant="BitVariant.Outline" OnClick="FocusTheToggleButton">Focus it</BitButton>@code { private bool twoWayBoundValue; private bool onChangeValue; private BitToggleButton programmaticToggleRef = default!; private async Task FocusTheToggleButton() => await programmaticToggleRef.FocusAsync(); }
Templates
<style>
.custom-template {
gap: 0.5rem;
display: flex;
align-items: center;
}
</style>
<BitToggleButton>
<div class="custom-template">
<BitIcon IconName="@BitIconName.Airplane" Color="BitColor.Tertiary" />
<span>Custom template</span>
<BitRollerLoading CustomSize="20" Color="BitColor.Tertiary" />
</div>
</BitToggleButton>
<BitToggleButton>
<OnTemplate>
<div class="custom-template">
<BitIcon IconName="@BitIconName.CheckMark" Color="BitColor.Success" />
<span>Subscribed</span>
</div>
</OnTemplate>
<OffTemplate>
<div class="custom-template">
<BitIcon IconName="@BitIconName.Add" Color="BitColor.Tertiary" />
<span>Subscribe</span>
</div>
</OffTemplate>
</BitToggleButton>Events
<BitToggleButton OnClick="() => clickCounter++"> Click me (@clickCounter) </BitToggleButton> <BitCheckbox Label="Allow the change" @bind-Value="allowChange" /> <BitToggleButton OnChanging="HandleOnChanging" OnText="Published" OffText="Draft" /> <div>Cancelled attempts: @cancelledCounter</div> <style> .clickable-box { cursor: pointer; padding: 1rem; border-radius: 0.25rem; border: 1px dashed var(--bit-clr-brd-sec); } </style> <div class="clickable-box" @onclick="() => containerClickCounter++"> <BitToggleButton Text="Bubbles up" /> <BitToggleButton StopPropagation Text="Stops here" /> </div> <div>Container clicks: @containerClickCounter</div>@code { private int clickCounter; private bool allowChange; private int cancelledCounter; private int containerClickCounter; private void HandleOnChanging(BitToggleButtonChangeArgs args) { if (allowChange) return; args.Cancel = true; cancelledCounter++; } }
Loading
<BitToggleButton IsLoading="isLoading" OnText="Muted" OffText="Unmuted" /> <BitCheckbox Label="IsLoading" @bind-Value="isLoading" /> <BitToggleButton IsLoading OnClick="() => blockedClickCounter++" Text="@($"Blocked ({blockedClickCounter})")" /> <BitToggleButton IsLoading Reclickable OnClick="() => reclickCounter++" Text="@($"Reclickable ({reclickCounter})")" /> <BitToggleButton AutoLoading OnChange="HandleAutoLoadingChange" OnText="Muted" OffText="Unmuted" /> <BitToggleButton IsLoading LoadingLabel="Saving..." LoadingLabelPosition="BitLabelPosition.End" Text="End" /> <BitToggleButton IsLoading LoadingLabel="Saving..." LoadingLabelPosition="BitLabelPosition.Start" Text="Start" /> <BitToggleButton IsLoading LoadingLabel="Saving..." LoadingLabelPosition="BitLabelPosition.Top" Text="Top" /> <BitToggleButton IsLoading LoadingLabel="Saving..." LoadingLabelPosition="BitLabelPosition.Bottom" Text="Bottom" /> <BitToggleButton IsLoading Text="Muted"> <LoadingTemplate> <div class="custom-template"> <BitRollerLoading CustomSize="20" Color="BitColor.PrimaryForeground" /> <span>Working on it...</span> </div> </LoadingTemplate> </BitToggleButton>@code { private bool isLoading; private int reclickCounter; private int blockedClickCounter; private async Task HandleAutoLoadingChange() { // stands in for persisting the new state somewhere slow await Task.Delay(2000); } }
FullWidth
<BitToggleButton FullWidth OnText="Muted" OnIconName="@BitIconName.MicOff"
OffText="Unmuted" OffIconName="@BitIconName.Microphone" />FixedColor
<BitToggleButton Color="BitColor.TertiaryBackground" FixedColor
OnIconName="@BitIconName.MicOff" OffIconName="@BitIconName.Microphone" />
<BitToggleButton Color="BitColor.TertiaryBackground" FixedColor
OnText="Muted" OnIconName="@BitIconName.MicOff"
OffText="Unmuted" OffIconName="@BitIconName.Microphone" />Accessibility
<BitToggleButton OnText="Muted" OffText="Unmuted" />
<BitToggleButton AriaLabel="Mute" OnText="Muted" OffText="Unmuted" />
<BitToggleButton AriaMode="BitToggleButtonAriaMode.Pressed" AriaLabel="Bold" IconOnly IconName="@BitIconName.Bold" />
<BitToggleButton AriaMode="BitToggleButtonAriaMode.Switch" AriaLabel="Airplane mode" Text="Airplane mode" />
<BitToggleButton AriaMode="BitToggleButtonAriaMode.None"
OnText="Pause" OnIconName="@BitIconName.Pause"
OffText="Play" OffIconName="@BitIconName.Play" />
<BitToggleButton IconOnly
OnAriaLabel="Unmute" OnIconName="@BitIconName.MicOff"
OffAriaLabel="Mute" OffIconName="@BitIconName.Microphone" />
<span id="wifi-label">Wi-Fi</span>
<BitToggleButton AriaLabelledBy="wifi-label" AriaMode="BitToggleButtonAriaMode.Switch"
IconOnly IconName="@BitIconName.StatusCircleCheckmark" />
<BitToggleButton AriaLabel="Show details"
AriaControls="accessibility-details"
AriaDescription="Expands the details panel below the button."
@bind-IsChecked="detailsVisible"
Text="Details" />
<div id="accessibility-details">@(detailsVisible ? "The details panel is visible." : "The details panel is hidden.")</div>Color
<BitToggleButton Variant="BitVariant.Fill" Color="BitColor.Primary">Primary</BitToggleButton>
<BitToggleButton Variant="BitVariant.Outline" Color="BitColor.Primary">Primary</BitToggleButton>
<BitToggleButton Variant="BitVariant.Text" Color="BitColor.Primary">Primary</BitToggleButton>
<BitToggleButton Variant="BitVariant.Fill" Color="BitColor.Secondary">Secondary</BitToggleButton>
<BitToggleButton Variant="BitVariant.Outline" Color="BitColor.Secondary">Secondary</BitToggleButton>
<BitToggleButton Variant="BitVariant.Text" Color="BitColor.Secondary">Secondary</BitToggleButton>
<BitToggleButton Variant="BitVariant.Fill" Color="BitColor.Tertiary">Tertiary</BitToggleButton>
<BitToggleButton Variant="BitVariant.Outline" Color="BitColor.Tertiary">Tertiary</BitToggleButton>
<BitToggleButton Variant="BitVariant.Text" Color="BitColor.Tertiary">Tertiary</BitToggleButton>
<BitToggleButton Variant="BitVariant.Fill" Color="BitColor.Info">Info</BitToggleButton>
<BitToggleButton Variant="BitVariant.Outline" Color="BitColor.Info">Info</BitToggleButton>
<BitToggleButton Variant="BitVariant.Text" Color="BitColor.Info">Info</BitToggleButton>
<BitToggleButton Variant="BitVariant.Fill" Color="BitColor.Success">Success</BitToggleButton>
<BitToggleButton Variant="BitVariant.Outline" Color="BitColor.Success">Success</BitToggleButton>
<BitToggleButton Variant="BitVariant.Text" Color="BitColor.Success">Success</BitToggleButton>
<BitToggleButton Variant="BitVariant.Fill" Color="BitColor.Warning">Warning</BitToggleButton>
<BitToggleButton Variant="BitVariant.Outline" Color="BitColor.Warning">Warning</BitToggleButton>
<BitToggleButton Variant="BitVariant.Text" Color="BitColor.Warning">Warning</BitToggleButton>
<BitToggleButton Variant="BitVariant.Fill" Color="BitColor.SevereWarning">SevereWarning</BitToggleButton>
<BitToggleButton Variant="BitVariant.Outline" Color="BitColor.SevereWarning">SevereWarning</BitToggleButton>
<BitToggleButton Variant="BitVariant.Text" Color="BitColor.SevereWarning">SevereWarning</BitToggleButton>
<BitToggleButton Variant="BitVariant.Fill" Color="BitColor.Error">Error</BitToggleButton>
<BitToggleButton Variant="BitVariant.Outline" Color="BitColor.Error">Error</BitToggleButton>
<BitToggleButton Variant="BitVariant.Text" Color="BitColor.Error">Error</BitToggleButton>
<BitToggleButton Variant="BitVariant.Fill" Color="BitColor.PrimaryBackground">PrimaryBackground</BitToggleButton>
<BitToggleButton Variant="BitVariant.Outline" Color="BitColor.PrimaryBackground">PrimaryBackground</BitToggleButton>
<BitToggleButton Variant="BitVariant.Text" Color="BitColor.PrimaryBackground">PrimaryBackground</BitToggleButton>
<BitToggleButton Variant="BitVariant.Fill" Color="BitColor.SecondaryBackground">SecondaryBackground</BitToggleButton>
<BitToggleButton Variant="BitVariant.Outline" Color="BitColor.SecondaryBackground">SecondaryBackground</BitToggleButton>
<BitToggleButton Variant="BitVariant.Text" Color="BitColor.SecondaryBackground">SecondaryBackground</BitToggleButton>
<BitToggleButton Variant="BitVariant.Fill" Color="BitColor.TertiaryBackground">TertiaryBackground</BitToggleButton>
<BitToggleButton Variant="BitVariant.Outline" Color="BitColor.TertiaryBackground">TertiaryBackground</BitToggleButton>
<BitToggleButton Variant="BitVariant.Text" Color="BitColor.TertiaryBackground">TertiaryBackground</BitToggleButton>
<BitToggleButton Variant="BitVariant.Fill" Color="BitColor.PrimaryForeground">PrimaryForeground</BitToggleButton>
<BitToggleButton Variant="BitVariant.Outline" Color="BitColor.PrimaryForeground">PrimaryForeground</BitToggleButton>
<BitToggleButton Variant="BitVariant.Text" Color="BitColor.PrimaryForeground">PrimaryForeground</BitToggleButton>
<BitToggleButton Variant="BitVariant.Fill" Color="BitColor.SecondaryForeground">SecondaryForeground</BitToggleButton>
<BitToggleButton Variant="BitVariant.Outline" Color="BitColor.SecondaryForeground">SecondaryForeground</BitToggleButton>
<BitToggleButton Variant="BitVariant.Text" Color="BitColor.SecondaryForeground">SecondaryForeground</BitToggleButton>
<BitToggleButton Variant="BitVariant.Fill" Color="BitColor.TertiaryForeground">TertiaryForeground</BitToggleButton>
<BitToggleButton Variant="BitVariant.Outline" Color="BitColor.TertiaryForeground">TertiaryForeground</BitToggleButton>
<BitToggleButton Variant="BitVariant.Text" Color="BitColor.TertiaryForeground">TertiaryForeground</BitToggleButton>
<BitToggleButton Variant="BitVariant.Fill" Color="BitColor.PrimaryBorder">PrimaryBorder</BitToggleButton>
<BitToggleButton Variant="BitVariant.Outline" Color="BitColor.PrimaryBorder">PrimaryBorder</BitToggleButton>
<BitToggleButton Variant="BitVariant.Text" Color="BitColor.PrimaryBorder">PrimaryBorder</BitToggleButton>
<BitToggleButton Variant="BitVariant.Fill" Color="BitColor.SecondaryBorder">SecondaryBorder</BitToggleButton>
<BitToggleButton Variant="BitVariant.Outline" Color="BitColor.SecondaryBorder">SecondaryBorder</BitToggleButton>
<BitToggleButton Variant="BitVariant.Text" Color="BitColor.SecondaryBorder">SecondaryBorder</BitToggleButton>
<BitToggleButton Variant="BitVariant.Fill" Color="BitColor.TertiaryBorder">TertiaryBorder</BitToggleButton>
<BitToggleButton Variant="BitVariant.Outline" Color="BitColor.TertiaryBorder">TertiaryBorder</BitToggleButton>
<BitToggleButton Variant="BitVariant.Text" Color="BitColor.TertiaryBorder">TertiaryBorder</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Fill" Color="BitColor.Primary">Primary</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Outline" Color="BitColor.Primary">Primary</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Text" Color="BitColor.Primary">Primary</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Fill" Color="BitColor.Secondary">Secondary</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Outline" Color="BitColor.Secondary">Secondary</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Text" Color="BitColor.Secondary">Secondary</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Fill" Color="BitColor.Tertiary">Tertiary</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Outline" Color="BitColor.Tertiary">Tertiary</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Text" Color="BitColor.Tertiary">Tertiary</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Fill" Color="BitColor.Info">Info</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Outline" Color="BitColor.Info">Info</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Text" Color="BitColor.Info">Info</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Fill" Color="BitColor.Success">Success</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Outline" Color="BitColor.Success">Success</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Text" Color="BitColor.Success">Success</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Fill" Color="BitColor.Warning">Warning</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Outline" Color="BitColor.Warning">Warning</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Text" Color="BitColor.Warning">Warning</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Fill" Color="BitColor.SevereWarning">SevereWarning</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Outline" Color="BitColor.SevereWarning">SevereWarning</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Text" Color="BitColor.SevereWarning">SevereWarning</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Fill" Color="BitColor.Error">Error</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Outline" Color="BitColor.Error">Error</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Text" Color="BitColor.Error">Error</BitToggleButton>
<div style="background:var(--bit-clr-fg-sec);padding:1rem">
<BitToggleButton IsEnabled="false" Variant="BitVariant.Fill" Color="BitColor.PrimaryBackground">PrimaryBackground</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Outline" Color="BitColor.PrimaryBackground">PrimaryBackground</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Text" Color="BitColor.PrimaryBackground">PrimaryBackground</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Fill" Color="BitColor.SecondaryBackground">SecondaryBackground</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Outline" Color="BitColor.SecondaryBackground">SecondaryBackground</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Text" Color="BitColor.SecondaryBackground">SecondaryBackground</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Fill" Color="BitColor.TertiaryBackground">TertiaryBackground</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Outline" Color="BitColor.TertiaryBackground">TertiaryBackground</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Text" Color="BitColor.TertiaryBackground">TertiaryBackground</BitToggleButton>
</div>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Fill" Color="BitColor.PrimaryForeground">PrimaryForeground</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Outline" Color="BitColor.PrimaryForeground">PrimaryForeground</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Text" Color="BitColor.PrimaryForeground">PrimaryForeground</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Fill" Color="BitColor.SecondaryForeground">SecondaryForeground</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Outline" Color="BitColor.SecondaryForeground">SecondaryForeground</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Text" Color="BitColor.SecondaryForeground">SecondaryForeground</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Fill" Color="BitColor.TertiaryForeground">TertiaryForeground</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Outline" Color="BitColor.TertiaryForeground">TertiaryForeground</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Text" Color="BitColor.TertiaryForeground">TertiaryForeground</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Fill" Color="BitColor.PrimaryBorder">PrimaryBorder</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Outline" Color="BitColor.PrimaryBorder">PrimaryBorder</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Text" Color="BitColor.PrimaryBorder">PrimaryBorder</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Fill" Color="BitColor.SecondaryBorder">SecondaryBorder</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Outline" Color="BitColor.SecondaryBorder">SecondaryBorder</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Text" Color="BitColor.SecondaryBorder">SecondaryBorder</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Fill" Color="BitColor.TertiaryBorder">TertiaryBorder</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Outline" Color="BitColor.TertiaryBorder">TertiaryBorder</BitToggleButton>
<BitToggleButton IsEnabled="false" Variant="BitVariant.Text" Color="BitColor.TertiaryBorder">TertiaryBorder</BitToggleButton>External Icons
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.1/css/all.min.css" />
<BitToggleButton Icon="@("fa-solid fa-microphone")" Text="Microphone" />
<BitToggleButton OnIcon="@BitIconInfo.Css("fa-solid fa-microphone-slash")" OnText="Muted"
OffIcon="@BitIconInfo.Css("fa-solid fa-microphone")" OffText="Unmuted"
Color="BitColor.Secondary" />
<BitToggleButton OnIcon="@BitIconInfo.Fa("solid volume-xmark")" OnText="Muted"
OffIcon="@BitIconInfo.Fa("solid volume-high")" OffText="Unmuted"
Color="BitColor.Tertiary" />
<BitToggleButton OnIcon="@BitIconInfo.Fa("regular circle-pause")" OnText="Paused"
OffIcon="@BitIconInfo.Fa("regular circle-play")" OffText="Playing"
Color="BitColor.Success" />
<BitToggleButton ShowCheckMark FixedCheckMark
CheckMarkIcon="@BitIconInfo.Fa("solid check")"
Variant="BitVariant.Outline" Text="Bold" />Size
<BitToggleButton Size="BitSize.Small" Variant="BitVariant.Fill" IconName="@BitIconName.Microphone" />
<BitToggleButton Size="BitSize.Small" Variant="BitVariant.Fill" Text="Microphone" />
<BitToggleButton Size="BitSize.Small" Variant="BitVariant.Fill" IconName="@BitIconName.Microphone" Text="Microphone" />
<BitToggleButton Size="BitSize.Small" Variant="BitVariant.Outline" IconName="@BitIconName.Microphone" />
<BitToggleButton Size="BitSize.Small" Variant="BitVariant.Outline" Text="Microphone" />
<BitToggleButton Size="BitSize.Small" Variant="BitVariant.Outline" IconName="@BitIconName.Microphone" Text="Microphone" />
<BitToggleButton Size="BitSize.Small" Variant="BitVariant.Text" IconName="@BitIconName.Microphone" />
<BitToggleButton Size="BitSize.Small" Variant="BitVariant.Text" Text="Microphone" />
<BitToggleButton Size="BitSize.Small" Variant="BitVariant.Text" IconName="@BitIconName.Microphone" Text="Microphone" />
<BitToggleButton Size="BitSize.Medium" Variant="BitVariant.Fill" IconName="@BitIconName.Microphone" />
<BitToggleButton Size="BitSize.Medium" Variant="BitVariant.Fill" Text="Microphone" />
<BitToggleButton Size="BitSize.Medium" Variant="BitVariant.Fill" IconName="@BitIconName.Microphone" Text="Microphone" />
<BitToggleButton Size="BitSize.Medium" Variant="BitVariant.Outline" IconName="@BitIconName.Microphone" />
<BitToggleButton Size="BitSize.Medium" Variant="BitVariant.Outline" Text="Microphone" />
<BitToggleButton Size="BitSize.Medium" Variant="BitVariant.Outline" IconName="@BitIconName.Microphone" Text="Microphone" />
<BitToggleButton Size="BitSize.Medium" Variant="BitVariant.Text" IconName="@BitIconName.Microphone" />
<BitToggleButton Size="BitSize.Medium" Variant="BitVariant.Text" Text="Microphone" />
<BitToggleButton Size="BitSize.Medium" Variant="BitVariant.Text" IconName="@BitIconName.Microphone" Text="Microphone" />
<BitToggleButton Size="BitSize.Large" Variant="BitVariant.Fill" IconName="@BitIconName.Microphone" />
<BitToggleButton Size="BitSize.Large" Variant="BitVariant.Fill" Text="Microphone" />
<BitToggleButton Size="BitSize.Large" Variant="BitVariant.Fill" IconName="@BitIconName.Microphone" Text="Microphone" />
<BitToggleButton Size="BitSize.Large" Variant="BitVariant.Outline" IconName="@BitIconName.Microphone" />
<BitToggleButton Size="BitSize.Large" Variant="BitVariant.Outline" Text="Microphone" />
<BitToggleButton Size="BitSize.Large" Variant="BitVariant.Outline" IconName="@BitIconName.Microphone" Text="Microphone" />
<BitToggleButton Size="BitSize.Large" Variant="BitVariant.Text" IconName="@BitIconName.Microphone" />
<BitToggleButton Size="BitSize.Large" Variant="BitVariant.Text" Text="Microphone" />
<BitToggleButton Size="BitSize.Large" Variant="BitVariant.Text" IconName="@BitIconName.Microphone" Text="Microphone" />Style & Class
<style>
.custom-class {
border-radius: 1rem;
border-color: blueviolet;
transition: background-color 1s;
background: linear-gradient(90deg, magenta, transparent) blue;
}
.custom-class:hover {
border-color: magenta;
background-color: magenta;
}
.custom-root {
border: none;
color: blueviolet;
background: transparent;
}
.custom-text {
position: relative;
}
.custom-root:hover .custom-text {
color: darkviolet;
}
.custom-text::after {
content: '';
left: 0;
width: 0;
height: 2px;
bottom: -6px;
position: absolute;
transition: 0.3s ease;
background: linear-gradient(90deg, #ff00cc, #3333ff);
}
.custom-icon {
color: hotpink;
}
.custom-checked {
border: none;
background-color: transparent;
}
.custom-checked .custom-text::after {
width: 100%;
}
.custom-checked .custom-icon {
color: hotpink;
}
</style>
<BitToggleButton Style="background-color: transparent; border-color: blueviolet; color: blueviolet;"
Variant="BitVariant.Outline"
OnText="Styled Button: Muted" OnIconName="@BitIconName.MicOff"
OffText="Styled Button: Unmuted" OffIconName="@BitIconName.Microphone" />
<BitToggleButton Class="custom-class"
OnText="Classed Button: Muted" OnIconName="@BitIconName.MicOff"
OffText="Classed Button: Unmuted" OffIconName="@BitIconName.Microphone" />
<BitToggleButton OnText="Styled Button: Muted" OnIconName="@BitIconName.MicOff"
OffText="Styled Button: Unmuted" OffIconName="@BitIconName.Microphone"
Styles="@(new() { Root = "--toggle-background: pink; background: var(--toggle-background); border: none;",
Checked = "--toggle-background: peachpuff;",
Icon = "color: red;",
Text = "color: tomato;" })" />
<BitToggleButton Variant="BitVariant.Text"
OnText="Classed Button: Muted" OnIconName="@BitIconName.MicOff"
OffText="Classed Button: Unmuted" OffIconName="@BitIconName.Microphone"
Classes="@(new() { Root = "custom-root",
Checked = "custom-checked",
Icon = "custom-icon",
Text = "custom-text" })" />
<BitToggleButton ShowCheckMark FixedCheckMark Variant="BitVariant.Outline" Text="Check mark"
Styles="@(new() { CheckMark = "color: hotpink;" })" />
<BitToggleButton IsLoading LoadingLabel="Saving..." Text="Loading parts"
Styles="@(new() { Spinner = "border-top-color: gold;",
LoadingLabel = "color: gold; font-style: italic;" })" />RTL
<div dir="rtl">
<BitToggleButton Dir="BitDir.Rtl" Variant="BitVariant.Fill"
OnText="صدا قطع" OnIconName="@BitIconName.MicOff"
OffText="صدا وصل" OffIconName="@BitIconName.Microphone" />
<BitToggleButton Dir="BitDir.Rtl" Variant="BitVariant.Outline"
OnText="صدا قطع" OnIconName="@BitIconName.MicOff"
OffText="صدا وصل" OffIconName="@BitIconName.Microphone" />
<BitToggleButton Dir="BitDir.Rtl" Variant="BitVariant.Text"
OnText="صدا قطع" OnIconName="@BitIconName.MicOff"
OffText="صدا وصل" OffIconName="@BitIconName.Microphone" />
</div>API
BitToggleButton parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| AllowDisabledFocus | bool | true | Keeps the disabled toggle button focusable and discoverable by screen readers, rendering aria-disabled instead of the native disabled attribute. Set it to false to render the native disabled attribute and remove the toggle button from the tab order. |
| AriaControls | string? | null | The id of the element that the toggle button controls (rendered into aria-controls). |
| AriaDescription | string? | null | Detailed description of the toggle button for the benefit of screen readers (rendered into aria-describedby). |
| AriaHidden | bool | false | If true, adds an aria-hidden attribute instructing screen readers to ignore the toggle button. |
| AriaLabelledBy | string? | null | The id of the element that labels the toggle button (rendered into aria-labelledby). |
| AriaMode | BitToggleButtonAriaMode? | null | Determines which ARIA state attribute the toggle button exposes to assistive technologies. The default Auto mode drops aria-pressed when the accessible name of the toggle button changes between the two states. |
| AutoFocus | bool | false | If true, the toggle button automatically receives focus when the page renders. |
| AutoLoading | bool | false | If true, enters the loading state automatically while awaiting the click and change events, preventing subsequent clicks by default. |
| CheckMarkIcon | BitIconInfo? | null | The check mark icon to display using custom CSS classes for external icon libraries. Takes precedence over CheckMarkIconName when both are set. |
| CheckMarkIconName | string? | null | The name of the check mark icon that renders in the checked state when ShowCheckMark is enabled. |
| ChildContent | RenderFragment? | null | The content of the toggle button. |
| Classes | BitToggleButtonClassStyles? | null | Custom CSS classes for different parts of the toggle button. |
| Color | BitColor? | null | The general color of the toggle button. |
| DefaultIsChecked | bool? | null | Default value of the IsChecked parameter. |
| FixedCheckMark | bool | false | Keeps the space of the check mark reserved in the unchecked state so the content does not shift while toggling. |
| FixedColor | bool | false | Preserves the foreground color of the toggle button through hover and focus. |
| FullWidth | bool | false | Expands the toggle button width to 100% of the available width. |
| Icon | BitIconInfo? | null | The icon to display using custom CSS classes for external icon libraries. Takes precedence over IconName when both are set. |
| IconName | string? | null | The icon name from built-in Fluent UI icons that renders inside the toggle button. |
| IconOnly | bool | false | Determines that only the icon should be rendered and changes the styles accordingly. |
| IconPosition | BitIconPosition? | null | The position of the icon relative to the content of the toggle button. |
| IsChecked | bool | false | Determines if the toggle button is in the checked state. |
| IsLoading | bool | false | Determines whether the toggle button is in the loading state, which replaces its content with a spinner and prevents subsequent clicks unless Reclickable is enabled. |
| LoadingLabel | string? | null | The loading label text to show next to the spinner icon. |
| LoadingLabelPosition | BitLabelPosition | BitLabelPosition.End | The position of the loading label in regards to the spinner icon. |
| LoadingTemplate | RenderFragment? | null | The custom template used to replace the default content of the toggle button in the loading state. |
| OffAriaLabel | string? | null | The aria-label of the toggle button when it is not checked. |
| OffColor | BitColor? | null | The color of the toggle button when it is not checked. Falls back to the Color parameter when not provided. |
| OffIcon | BitIconInfo? | null | The icon to display when the toggle button is not checked, using custom CSS classes for external icon libraries. Takes precedence over OffIconName. |
| OffIconName | string? | null | The icon from built-in Fluent UI icons when the toggle button is not checked. |
| OffTemplate | RenderFragment? | null | The custom content of the toggle button when it is not checked. |
| OffText | string? | null | The text of the toggle button when it is not checked. |
| OffTitle | string? | null | The title of the toggle button when it is not checked. |
| OffVariant | BitVariant? | null | The visual variant of the toggle button when it is not checked. Falls back to the Variant parameter when not provided. |
| OnAriaLabel | string? | null | The aria-label of the toggle button when it is checked. |
| OnChange | EventCallback<bool> | Callback for when the IsChecked value has changed. | |
| OnChanging | EventCallback<BitToggleButtonChangeArgs> | Callback invoked before the checked state changes, letting the change be cancelled by setting Cancel on its arguments. | |
| OnClick | EventCallback<MouseEventArgs> | Callback for when the toggle button is clicked. | |
| OnColor | BitColor? | null | The color of the toggle button when it is checked. Falls back to the Color parameter when not provided. |
| OnIcon | BitIconInfo? | null | The icon to display when the toggle button is checked, using custom CSS classes for external icon libraries. Takes precedence over OnIconName. |
| OnIconName | string? | null | The icon from built-in Fluent UI icons when the toggle button is checked. |
| OnTemplate | RenderFragment? | null | The custom content of the toggle button when it is checked. |
| OnText | string? | null | The text of the toggle button when it is checked. |
| OnTitle | string? | null | The title of the toggle button when it is checked. |
| OnVariant | BitVariant? | null | The visual variant of the toggle button when it is checked. Falls back to the Variant parameter when not provided. |
| Reclickable | bool | false | Enables re-clicking while the toggle button is in the loading state. |
| ShowCheckMark | bool | false | Renders a check mark in the checked state so the state is not conveyed by color alone. |
| Size | BitSize? | null | The size of the toggle button. |
| StopPropagation | bool | false | If true, stops the click event from bubbling up to the parent elements. |
| Styles | BitToggleButtonClassStyles? | null | Custom CSS styles for different parts of the toggle button. |
| Text | string? | null | The text of the toggle button. |
| Title | string? | null | The title to show when the mouse is placed on the toggle button. |
| Variant | BitVariant? | null | The visual variant of the toggle button. |
BitToggleButton public members
| Name | Type | Default value | Description |
|---|---|---|---|
| FocusAsync | ValueTask | Gives focus to the root element of the toggle button. | |
| ToggleAsync | Task | Toggles the checked state of the toggle button, going through the same cancellation and change notification path a click does. |
BitComponentBase parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| AriaLabel | string? | null | Gets or sets the accessible label for the component, used by assistive technologies. |
| Class | string? | null | Gets or sets the CSS class name(s) to apply to the rendered element. |
| Dir | BitDir? | null | Gets or sets the text directionality for the component's content. |
| ForceAnimation | bool | false | Gets or sets a value indicating whether the component's animations play at their full duration even when reduced motion is requested. |
| HtmlAttributes | Dictionary<string, object> | new Dictionary<string, object>() | Captures additional HTML attributes to be applied to the rendered element, in addition to the component's parameters. |
| Id | string? | null | Gets or sets the unique identifier for the component's root element. |
| IsEnabled | bool | true | Gets or sets a value indicating whether the component is enabled and can respond to user interaction. |
| Style | string? | null | Gets or sets the CSS style string to apply to the rendered element. |
| TabIndex | string? | null | Gets or sets the tab order index for the component when navigating with the keyboard. |
| Visibility | BitVisibility | BitVisibility.Visible | Gets or sets the visibility state (visible, hidden, or collapsed) of the component. |
BitComponentBase public members
| Name | Type | Default value | Description |
|---|---|---|---|
| UniqueId | Guid | Guid.NewGuid() | Gets the readonly unique identifier for the component's root element, assigned when the component instance is constructed. |
| RootElement | ElementReference | Gets the reference to the root HTML element associated with this component. |
BitToggleButtonClassStyles properties
| Name | Type | Default value | Description |
|---|---|---|---|
| Root | string? | null | Custom CSS classes/styles for the root element of the BitToggleButton. |
| CheckMark | string? | null | Custom CSS classes/styles for the check mark element of the BitToggleButton. |
| Checked | string? | null | Custom CSS classes/styles for the checked state of the BitToggleButton. |
| HiddenContent | string? | null | Custom CSS classes/styles for the container of the hidden content of the BitToggleButton in the loading state. |
| Icon | string? | null | Custom CSS classes/styles for the icon element of the BitToggleButton. |
| LoadingContainer | string? | null | Custom CSS classes/styles for the loading container of the BitToggleButton. |
| LoadingLabel | string? | null | Custom CSS classes/styles for the loading label of the BitToggleButton. |
| Spinner | string? | null | Custom CSS classes/styles for the loading spinner of the BitToggleButton. |
| Text | string? | null | Custom CSS classes/styles for the text element of the BitToggleButton. |
BitToggleButtonChangeArgs properties
The arguments of the OnChanging callback of the BitToggleButton.
| Name | Type | Default value | Description |
|---|---|---|---|
| Value | bool | false | The checked state the toggle button is about to move to. |
| Cancel | bool | false | Set to true to cancel the change and keep the current checked state. |
BitToggleButtonAriaMode enum
| Name | Value | Description |
|---|---|---|
| Auto | 0 | Renders aria-pressed, unless the accessible name of the toggle button changes between the checked and unchecked states, in which case no state attribute is rendered. |
| Pressed | 1 | Always renders aria-pressed, even when the accessible name changes between the two states. |
| Switch | 2 | Renders role="switch" along with aria-checked instead of aria-pressed. |
| None | 3 | Renders no state attribute at all, for content that already conveys the state. |
BitColor enum
| Name | Value | Description |
|---|---|---|
| Primary | 0 | Info Primary general color. |
| Secondary | 1 | Secondary general color. |
| Tertiary | 2 | Tertiary general color. |
| Info | 3 | Info general color. |
| Success | 4 | Success general color. |
| Warning | 5 | Warning general color. |
| SevereWarning | 6 | SevereWarning general color. |
| Error | 7 | Error general color. |
| PrimaryBackground | 8 | Primary background color. |
| SecondaryBackground | 9 | Secondary background color. |
| TertiaryBackground | 10 | Tertiary background color. |
| PrimaryForeground | 11 | Primary foreground color. |
| SecondaryForeground | 12 | Secondary foreground color. |
| TertiaryForeground | 13 | Tertiary foreground color. |
| PrimaryBorder | 14 | Primary border color. |
| SecondaryBorder | 15 | Secondary border color. |
| TertiaryBorder | 16 | Tertiary border color. |
BitIconPosition enum
| Name | Value | Description |
|---|---|---|
| Start | 0 | Icon renders before the content (default). |
| End | 1 | Icon renders after the content. |
BitLabelPosition enum
| Name | Value | Description |
|---|---|---|
| Top | 0 | The label renders above the spinner. |
| End | 1 | The label renders after the spinner. |
| Bottom | 2 | The label renders below the spinner. |
| Start | 3 | The label renders before the spinner. |
BitSize enum
| Name | Value | Description |
|---|---|---|
| Small | 0 | The small size button. |
| Medium | 1 | The medium size button. |
| Large | 2 | The large size button. |
BitVariant enum
| Name | Value | Description |
|---|---|---|
| Fill | 0 | Fill styled variant. |
| Outline | 1 | Outline styled variant. |
| Text | 2 | Text styled variant. |
BitVisibility enum
| Name | Value | Description |
|---|---|---|
| Visible | 0 | The content of the component is visible. |
| Hidden | 1 | The content of the component is hidden, but the space it takes on the page remains (visibility:hidden). |
| Collapsed | 2 | The component is hidden (display:none). |
BitDir enum
| Name | Value | Description |
|---|---|---|
| Ltr | 0 | Ltr (left to right) is to be used for languages that are written from the left to the right (like English). |
| Rtl | 1 | Rtl (right to left) is to be used for languages that are written from the right to the left (like Arabic). |
| Auto | 2 | Auto lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then applies that directionality to the whole element. |
Feedback
You can give us your feedback through our GitHub repo by filing a new Issue or starting a new Discussion.
Or you can review / edit this page on GitHub.