Components / controls
ToggleGroup builder
A run of toggles where none, one, or several may be in.
A builder is RenderOnce. Construct and mount it in one expression.
use gpui_kit::controls::toggle_button::ToggleGroup;
Reviewed in toggle.
Construct
new(ident: impl Into<Ident>) -> Self
Options
Chain onto the value.
label(label: impl Into<SharedString>) -> Self
items(items: impl IntoIterator<Item = ToggleItem>) -> Self
selection(selection: ToggleSelection) -> Self
pressed(ids: impl IntoIterator<Item = SharedString>) -> Self
pressed_ids<S: AsRef<str>>(ids: &[S]) -> Self
variant(variant: ButtonVariant) -> Self
ground(ground: Surface) -> Self
on_change(handler: impl Fn(Vec<SharedString>, SharedString, &mut Window, &mut App) + 'static) -> Self
bind(binding: &Binding<Vec<SharedString>>, cx: &App) -> Self
Example · toggle
fn toggle(_window: &mut Window, cx: &mut App) -> AnyElement {
let theme = cx.theme().clone();
stack(&theme)
.child(caption(&theme, "A button that stays in"))
.child(
row(&theme)
.child(
Toggle::new("scene.toggle.bold")
.label("Bold")
.pressed(true)
.on_press(|_, _, _| {}),
)
.child(
Toggle::new("scene.toggle.italic")
.label("Italic")
.on_press(|_, _, _| {}),
)
.child(
Toggle::new("scene.toggle.review")
.label("Review mode")
.secondary()
.pressed(true)
.on_press(|_, _, _| {}),
)
.child(
Toggle::new("scene.toggle.locked")
.label("Locked")
.disabled(true),
),
)
.child(caption(&theme, "Any number in at once"))
.child(
ToggleGroup::new("scene.toggle-group.format")
.label("Formatting")
.selection(ToggleSelection::Any)
.items([
ToggleItem::new("bold", "Bold"),
ToggleItem::new("italic", "Italic"),
ToggleItem::new("underline", "Underline").disabled(true),
])
.pressed_ids(&["bold", "italic"])
.on_change(|_, _, _, _| {}),
)
.child(caption(
&theme,
"One or none, which a segmented strip cannot say",
))
.child(
ToggleGroup::new("scene.toggle-group.density")
.label("Density")
.selection(ToggleSelection::AtMostOne)
.items([
ToggleItem::new("compact", "Compact"),
ToggleItem::new("cosy", "Cosy"),
ToggleItem::new("roomy", "Roomy"),
])
.pressed_ids(&["cosy"])
.on_change(|_, _, _, _| {}),
)
.into_any_element()
}