1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use crate::components::menubar::{context::RootContext, menu::Menu as MenuComponent};
use leptos::*;

pub use crate::components::menubar::item::Item;
pub use crate::components::menubar::item::SubMenuItem as SubMenu;
pub use crate::components::menubar::item::SubMenuItemContent as SubMenuContent;
pub use crate::components::menubar::item::SubMenuItemTrigger as SubMenuTrigger;
pub use crate::components::menubar::menu::MenuContent as Content;
pub use crate::components::menubar::menu::MenuTrigger as Trigger;

#[component]
pub fn Menu(
    #[prop(default = false)] disabled: bool,
    #[prop(into, optional)] class: String,
    #[prop(default = false)] allow_loop: bool,
    children: Children,
) -> impl IntoView {
    let ctx = RootContext {
        allow_item_loop: allow_loop,
        ..RootContext::default()
    };

    provide_context(ctx);

    view! {
        <MenuComponent disabled={disabled} class={class}>
            {children()}
        </MenuComponent>
    }
}