Components / ButtonGroup

ButtonGroup

Buttons glued side by side, as one control.

Example

The component itself, running in WebAssembly, beside its code in a playground. Try it.

Code

use ravenrs::prelude::*;

fn button_group() -> impl View {
    let period = State::new(0);
    view_fn(move || {
        let chosen = period.get();
        let item = |index, label: &str| {
            let period = period.clone();
            let style = if chosen == index { ButtonStyle::Primary } else { ButtonStyle::Secondary };
            Button::new(label).style(style).on_click(move || period.set(index))
        };
        ButtonGroup::new([item(0, "Day"), item(1, "Week"), item(2, "Month")]).label("Period")
    })
}

Open in the playground, with every example →

Full API of ButtonGroup →