Skip to main content

Menu

Struct Menu 

Source
pub struct Menu<Msg> { /* private fields */ }
Expand description

The navigation column of an application: groups of destinations under faint headings.

With no options it is the plainest menu: the selected item is raised with the accent pillar, a hovered item rises softly, and the icon and label of both slide one cell while badges stay anchored. It is usually the content of an AppShell sidebar.

Keys while focused move a cursor, drawn like hover, without leaving the current page: ↑/↓, Home/End, and typing a letter jumps to the next item starting with it. Enter or Space opens the item under the cursor; a click opens at once. The application owns the selection. There is only ever one such highlight: moving the pointer onto a row moves the cursor there, and the keyboard continues from it.

collapsible lets groups with a title fold: the heading gets a chevron, a click or Enter on it toggles, → opens and ← closes it, and ← on an item goes to its heading. A foldable heading rises and slides its title like an item; its chevron stays anchored.

Style keys: menu-item with hover, selected, focus, pressed; menu-badge with the same states; menu-heading with hover; scrollbar.

Implementations§

Source§

impl<Msg: 'static> Menu<Msg>

Source

pub fn new(groups: impl IntoIterator<Item = MenuGroup>) -> Self

A menu of groups.

Source

pub fn selected(self, key: Option<&str>) -> Self

The key of the current item.

Source

pub fn on_select(self, message: impl Fn(&str) -> Msg + 'static) -> Self

Message for opening the item with key.

Source

pub fn collapsible(self, message: impl Fn(&str, bool) -> Msg + 'static) -> Self

Lets titled groups fold: message(group, open) asks the application to open or close a group. Pass the closed groups with collapsed.

Source

pub fn collapsed( self, groups: impl IntoIterator<Item = impl Into<String>>, ) -> Self

Keys of the groups that are closed in a collapsible menu.

Trait Implementations§

Source§

impl<Msg: 'static> Widget<Msg> for Menu<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 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.
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.

Auto Trait Implementations§

§

impl<Msg> !RefUnwindSafe for Menu<Msg>

§

impl<Msg> !Send for Menu<Msg>

§

impl<Msg> !Sync for Menu<Msg>

§

impl<Msg> !UnwindSafe for Menu<Msg>

§

impl<Msg> Freeze for Menu<Msg>
where Option<Box<dyn Fn(&str) -> Msg>>: Freeze, Option<Box<dyn Fn(&str, bool) -> Msg>>: Freeze,

§

impl<Msg> Unpin for Menu<Msg>
where Option<Box<dyn Fn(&str) -> Msg>>: Unpin, Option<Box<dyn Fn(&str, bool) -> Msg>>: Unpin,

§

impl<Msg> UnsafeUnpin for Menu<Msg>
where Option<Box<dyn Fn(&str) -> Msg>>: UnsafeUnpin, Option<Box<dyn Fn(&str, bool) -> 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.