Togglable channels, the greatest since sliced bread
This commit is contained in:
parent
4c2348eb53
commit
60ce75c34a
4 changed files with 61 additions and 26 deletions
|
@ -1,19 +1,30 @@
|
|||
use gpui::{div, Element, ParentElement};
|
||||
use std::rc::Rc;
|
||||
|
||||
use crate::{Color, Icon, IconElement, IconSize, Toggle};
|
||||
use gpui::{div, Element, IntoElement, MouseDownEvent, ParentElement, WindowContext};
|
||||
|
||||
pub fn disclosure_control(toggle: Toggle) -> impl Element {
|
||||
use crate::{Color, Icon, IconButton, IconSize, Toggle};
|
||||
|
||||
pub fn disclosure_control(
|
||||
toggle: Toggle,
|
||||
on_toggle: Option<Rc<dyn Fn(&MouseDownEvent, &mut WindowContext) + 'static>>,
|
||||
) -> impl Element {
|
||||
match (toggle.is_toggleable(), toggle.is_toggled()) {
|
||||
(false, _) => div(),
|
||||
(_, true) => div().child(
|
||||
IconElement::new(Icon::ChevronDown)
|
||||
IconButton::new("toggle", Icon::ChevronDown)
|
||||
.color(Color::Muted)
|
||||
.size(IconSize::Small),
|
||||
.size(IconSize::Small)
|
||||
.when_some(on_toggle, move |el, on_toggle| {
|
||||
el.on_click(move |e, cx| on_toggle(e, cx))
|
||||
}),
|
||||
),
|
||||
(_, false) => div().child(
|
||||
IconElement::new(Icon::ChevronRight)
|
||||
IconButton::new("toggle", Icon::ChevronRight)
|
||||
.color(Color::Muted)
|
||||
.size(IconSize::Small),
|
||||
.size(IconSize::Small)
|
||||
.when_some(on_toggle, move |el, on_toggle| {
|
||||
el.on_click(move |e, cx| on_toggle(e, cx))
|
||||
}),
|
||||
),
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue