biji_ui/components/menu/
mod.rs1use std::time::Duration;
2
3use crate::components::menubar::{context::RootContext, menu::Menu as MenuComponent};
4use leptos::prelude::*;
5
6pub use crate::components::menubar::item::Item;
7pub use crate::components::menubar::item::SubMenuItem as SubMenu;
8pub use crate::components::menubar::item::SubMenuItemContent as SubMenuContent;
9pub use crate::components::menubar::item::SubMenuItemTrigger as SubMenuTrigger;
10pub use crate::components::menubar::menu::MenuContent as Content;
11pub use crate::components::menubar::menu::MenuTrigger as Trigger;
12pub use crate::utils::positioning::Positioning;
13
14#[component]
15pub fn Menu(
16 #[prop(default = false)] disabled: bool,
17 #[prop(into, optional)] class: String,
18 #[prop(default = false)] allow_loop: bool,
19 #[prop(default = Positioning::BottomStart)] positioning: Positioning,
20 #[prop(default = Duration::from_millis(200))] hide_delay: Duration,
21 #[prop(default = false)] prevent_scroll: bool,
22 children: Children,
23) -> impl IntoView {
24 let ctx = RootContext {
25 allow_item_loop: allow_loop,
26 prevent_scroll,
27 ..RootContext::default()
28 };
29
30 provide_context(ctx);
31
32 view! {
33 <MenuComponent
34 disabled={disabled}
35 class={class}
36 positioning={positioning}
37 hide_delay={hide_delay}
38 >
39 {children()}
40 </MenuComponent>
41 }
42}