Skip to main content

Toggle group

Choose one or more pressed values from an accessible oriented toggle group.

Default

On this page

Installation

Copy this component and its required dependencies into the consumer-owned Components project.

dotnet fve add toggle-group --config src/Acme.Components/fve.json

The CLI resolves dependencies and preserves consumer-authored files. See Installation for project initialization and Tailwind source detection.

Usage

open System
open FSharp.ViewEngine
open Acme.Components
open type Html
open type Svg
open type Datastar

let defaultToggleGroup =
    ToggleGroup.single "alignment-default" "components-alignment-default" "Text alignment" id [
        ToggleGroupOption.create "left" "Left"
        ToggleGroupOption.create "center" "Center"
        ToggleGroupOption.create "right" "Right" ]
    |> ToggleGroup.render

Single selection

Multiple, spaced and unavailable

Vertical orientation

API reference

type ToggleGroupVariant =
    | Connected
    | Spaced

type ToggleGroupOrientation =
    | Horizontal
    | Vertical

type ToggleGroupOption<'value>

type ToggleGroupConfig<'value, 'mode>

module ToggleGroup =
    val single : name:string -> id:string -> label:string -> encode:('value -> string) -> options:ToggleGroupOption<'value> list -> ToggleGroupConfig<'value, SingleSelection>
    val multiple : name:string -> id:string -> label:string -> encode:('value -> string) -> options:ToggleGroupOption<'value> list -> ToggleGroupConfig<'value, MultipleSelection>
    val withSelected : selected:'value -> config:ToggleGroupConfig<'value, SingleSelection> -> ToggleGroupConfig<'value, SingleSelection>
    val withSelectedMany : selected:'value list -> config:ToggleGroupConfig<'value, MultipleSelection> -> ToggleGroupConfig<'value, MultipleSelection>
    val allowEmpty : config:ToggleGroupConfig<'value, SingleSelection> -> ToggleGroupConfig<'value, SingleSelection>
    val withVariant : variant:ToggleGroupVariant -> config:ToggleGroupConfig<'value, 'mode> -> ToggleGroupConfig<'value, 'mode>
    val withOrientation : orientation:ToggleGroupOrientation -> config:ToggleGroupConfig<'value, 'mode> -> ToggleGroupConfig<'value, 'mode>
    val withSize : size:ControlSize -> config:ToggleGroupConfig<'value, 'mode> -> ToggleGroupConfig<'value, 'mode>
    val disabled : config:ToggleGroupConfig<'value, 'mode> -> ToggleGroupConfig<'value, 'mode>
    val render : config:ToggleGroupConfig<'value, 'mode> -> HtmlElement

module ToggleGroupOption =
    val create : value:'a -> label:string -> ToggleGroupOption<'a>
    val withLeading : leading:HtmlElement -> option:ToggleGroupOption<'value> -> ToggleGroupOption<'value>
    val disabled : option:ToggleGroupOption<'value> -> ToggleGroupOption<'value>