biji_ui/components/menu/
mod.rs

1use 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}