Skip to main content

Accordion

Struct Accordion 

Source
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>

Source

pub fn new(sections: impl IntoIterator<Item = impl Into<Section>>) -> Self

An accordion of sections, all closed.

Source

pub fn open(self, open: impl IntoIterator<Item = bool>) -> Self

Which sections are open; open[i] for section i, missing entries are closed.

Source

pub fn on_toggle(self, message: impl Fn(usize, bool) -> Msg + 'static) -> Self

Message for opening (true) or closing (false) section index.

Source

pub fn single(self, single: bool) -> Self

Keeps at most one section open: opening one also sends close messages for the others.

Trait Implementations§

Source§

impl<Msg: 'static> Container<Msg> for Accordion<Msg>

Source§

fn set_children(&mut self, children: Vec<Node<Msg>>)

Receives the children built for this widget.
Source§

impl<Msg: 'static> Widget<Msg> for Accordion<Msg>

Source§

fn measure(&self, cx: &mut MeasureCx<'_>, available: Size) -> Size

The size the widget wants when it may use up to available.
Source§

fn paint(&self, cx: &mut PaintCx<'_>, area: Rect)

Draws the widget into area.
Source§

fn event(&self, cx: &mut EventCx<'_, Msg>, event: &Event) -> bool

Handles input. Returns true when the event was used; unused key and scroll events bubble to the parent widget.
Source§

fn focusable(&self) -> bool

Whether the widget can take keyboard focus.
Source§

fn children(&self) -> &[Node<Msg>]

Child nodes, for widgets that contain other widgets.
Source§

fn children_mut(&mut self) -> &mut [Node<Msg>]

Mutable child nodes, used to assign ids.
Source§

fn paint_overlay(&self, _cx: &mut PaintCx<'_>, _anchor: Rect)

Draws the widget’s overlay after the whole view was painted, when it asked for one with 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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.