pub struct Menu;Expand description
A horizontal menu bar component.
This component provides a horizontal menu bar for application commands and navigation. Items can be navigated with Left/Right arrows and activated with Enter.
§Keyboard Navigation
The menu itself doesn’t handle keyboard events directly. Your application should map:
- Right arrow to
MenuMessage::Right - Left arrow to
MenuMessage::Left - Enter to
MenuMessage::Select
§Visual Layout
File Edit View Help
^^^^
└── Selected item (highlighted)§Example
use envision::component::{Menu, MenuMessage, MenuOutput, MenuState, MenuItem, Component};
let mut state = MenuState::new(vec![
MenuItem::new("New"),
MenuItem::new("Open"),
MenuItem::disabled("Save"),
]);
// Navigate
Menu::update(&mut state, MenuMessage::Right);
// Select
let output = Menu::update(&mut state, MenuMessage::Select);
assert_eq!(output, Some(MenuOutput::Selected(1)));Trait Implementations§
Source§impl Component for Menu
impl Component for Menu
Source§type Message = MenuMessage
type Message = MenuMessage
Messages this component can receive. Read more
Source§type Output = MenuOutput
type Output = MenuOutput
Messages this component can emit to its parent. Read more
Source§fn update(state: &mut Self::State, msg: Self::Message) -> Option<Self::Output>
fn update(state: &mut Self::State, msg: Self::Message) -> Option<Self::Output>
Update component state based on a message. Read more
Source§fn handle_event(
_state: &Self::State,
event: &Event,
ctx: &ViewContext,
) -> Option<Self::Message>
fn handle_event( _state: &Self::State, event: &Event, ctx: &ViewContext, ) -> Option<Self::Message>
Maps an input event to a component message. Read more
Source§fn view(
state: &Self::State,
frame: &mut Frame<'_>,
area: Rect,
theme: &Theme,
ctx: &ViewContext,
)
fn view( state: &Self::State, frame: &mut Frame<'_>, area: Rect, theme: &Theme, ctx: &ViewContext, )
Render the component to the given area. Read more
Source§fn traced_view(
state: &Self::State,
frame: &mut Frame<'_>,
area: Rect,
theme: &Theme,
ctx: &ViewContext,
)
fn traced_view( state: &Self::State, frame: &mut Frame<'_>, area: Rect, theme: &Theme, ctx: &ViewContext, )
Renders the component with optional tracing instrumentation. Read more
Source§fn dispatch_event(
state: &mut Self::State,
event: &Event,
ctx: &ViewContext,
) -> Option<Self::Output>
fn dispatch_event( state: &mut Self::State, event: &Event, ctx: &ViewContext, ) -> Option<Self::Output>
Dispatches an event by mapping it to a message and updating state. Read more
Auto Trait Implementations§
impl Freeze for Menu
impl RefUnwindSafe for Menu
impl Send for Menu
impl Sync for Menu
impl Unpin for Menu
impl UnsafeUnpin for Menu
impl UnwindSafe for Menu
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
Mutably borrows from an owned value. Read more
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>
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 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>
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