Macro raui_core::widget[][src]

macro_rules! widget {
    {()} => { ... };
    {[]} => { ... };
    ({{$expr:expr}}) => { ... };
    ({$expr:expr}) => { ... };
    {
        (
            $(
                #{ $key:expr }
            )?
            $(
                | { $idref:expr }
            )?
            $type_id:path
            $(
                : {$props:expr}
            )?
            $(
                | {$shared_props:expr}
            )?
            $(
                {
                    $($named_slot_name:ident = $named_slot_widget:tt)*
                }
            )?
            $(
                |[ $listed_slot_widgets:expr ]|
            )?
            $(
                [
                    $($listed_slot_widget:tt)*
                ]
            )?
        )
    } => { ... };
    (@wrap {$expr:expr}) => { ... };
    (@wrap $tree:tt) => { ... };
}
Expand description

Create a WidgetNode struct from a custom widget tree DSL

The widget macro is primarily used to construct widget trees as the return value of components.

Example


// You can create [`WidgetNode`]'s and assign them to variables
let popup_widget = widget! {
    (popup: {popup_props})
};

widget! {
    // parenthesis are used around components and they each _may_ have a key,
    // props, shared props, listed children, and/or named children. Everything is,
    // optional.
    (#{"widget_key"} my_component: {my_component_props} | {my_component_shared_props} {
        // named children
        content = (component_1: {component_1_props})
    } [
        // listed children
        (component_2: {component_2_props})
        (component_3: {component_3_props})

        // You can also use `{variable_name}` syntax to expand variables into a widget
        {popup_widget}
    ])
}