pub fn menu_flyout<Msg>(
widget: WidgetId,
open: bool,
target: WidgetId,
menu: crate::MenuSpec,
page: ViewNode<Msg>,
) -> ViewNode<Msg> {
let highlighted = open.then(|| {
crate::ZsMenuFlyoutState {
open: true,
target,
highlighted: None,
open_submenus: Vec::new(),
}
.first_enabled(&menu)
});
ViewNode::new(ViewNodeKind::MenuFlyout {
menu,
open,
target,
#[cfg(feature = "context-menu")]
context_trigger: false,
#[cfg(feature = "context-menu")]
context_anchor: None,
anchor: None,
highlighted: highlighted.flatten(),
open_submenus: Vec::new(),
on_command: None,
on_open_change: None,
})
.id(widget)
.child(page)
}
#[cfg(feature = "context-menu")]
pub fn context_menu<Msg>(
widget: WidgetId,
menu: crate::MenuSpec,
page: ViewNode<Msg>,
) -> ViewNode<Msg> {
ViewNode::new(ViewNodeKind::MenuFlyout {
menu,
open: false,
target: widget,
context_trigger: true,
context_anchor: None,
anchor: None,
highlighted: None,
open_submenus: Vec::new(),
on_command: None,
on_open_change: None,
})
.id(widget)
.child(page)
}