pub struct Accordion<Msg> { /* private fields */ }Expand description
A vertical list of titled sections; each opens with a click or Enter to show its body.
Add one child per section with View::add_with: the first
child is the body of the first section, and so on. The application owns which sections are
open and hears about changes through Accordion::on_toggle. Sections are separated by
surface tones, never frames: the title row is one tone above the body. An open body takes
its natural height, so an accordion usually lives inside a ScrollView
or a panel; opening unfolds the body row by row over twice motion.enter.
A hovered title (or the keyboard’s title while focused) rises with the pillar, and its icon and title slide one cell right. The chevron and the detail never move.
Keys while focused: ↑/↓, Home/End move between titles, Enter or Space opens or closes. A click anywhere on a title row opens or closes it.
Style keys: section (gap), section-title (bg, fg, bold, pillar) with hover,
focus, checked (open), section-chevron (fg), section-detail (fg),
section-body (bg, padding). Icons: section-open, section-closed.
Implementations§
Source§impl<Msg: 'static> Accordion<Msg>
impl<Msg: 'static> Accordion<Msg>
Sourcepub fn new(sections: impl IntoIterator<Item = impl Into<Section>>) -> Self
pub fn new(sections: impl IntoIterator<Item = impl Into<Section>>) -> Self
An accordion of sections, all closed.
Sourcepub fn open(self, open: impl IntoIterator<Item = bool>) -> Self
pub fn open(self, open: impl IntoIterator<Item = bool>) -> Self
Which sections are open; open[i] for section i, missing entries are closed.
Trait Implementations§
Source§impl<Msg: 'static> Container<Msg> for Accordion<Msg>
impl<Msg: 'static> Container<Msg> for Accordion<Msg>
Source§fn set_children(&mut self, children: Vec<Node<Msg>>)
fn set_children(&mut self, children: Vec<Node<Msg>>)
Source§impl<Msg: 'static> Widget<Msg> for Accordion<Msg>
impl<Msg: 'static> Widget<Msg> for Accordion<Msg>
Source§fn measure(&self, cx: &mut MeasureCx<'_>, available: Size) -> Size
fn measure(&self, cx: &mut MeasureCx<'_>, available: Size) -> Size
available.Source§fn event(&self, cx: &mut EventCx<'_, Msg>, event: &Event) -> bool
fn event(&self, cx: &mut EventCx<'_, Msg>, event: &Event) -> bool
true when the event was used; unused key and scroll events
bubble to the parent widget.Source§fn children_mut(&mut self) -> &mut [Node<Msg>]
fn children_mut(&mut self) -> &mut [Node<Msg>]
Source§fn paint_overlay(&self, _cx: &mut PaintCx<'_>, _anchor: Rect)
fn paint_overlay(&self, _cx: &mut PaintCx<'_>, _anchor: Rect)
PaintCx::request_overlay. anchor is the area the widget was painted in.Auto Trait Implementations§
impl<Msg> !RefUnwindSafe for Accordion<Msg>
impl<Msg> !Send for Accordion<Msg>
impl<Msg> !Sync for Accordion<Msg>
impl<Msg> !UnwindSafe for Accordion<Msg>
impl<Msg> Freeze for Accordion<Msg>where
Sections<Msg>: Freeze,
impl<Msg> Unpin for Accordion<Msg>where
Sections<Msg>: Unpin,
impl<Msg> UnsafeUnpin for Accordion<Msg>where
Sections<Msg>: UnsafeUnpin,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more