raui_core/widget/component/containers/
hidden_box.rs

1use crate::{
2    PropsData, unpack_named_slots,
3    widget::{context::WidgetContext, node::WidgetNode, unit::area::AreaBoxNode},
4};
5use serde::{Deserialize, Serialize};
6
7#[derive(PropsData, Debug, Default, Copy, Clone, Serialize, Deserialize)]
8#[props_data(crate::props::PropsData)]
9#[prefab(crate::Prefab)]
10pub struct HiddenBoxProps(#[serde(default)] pub bool);
11
12pub fn hidden_box(context: WidgetContext) -> WidgetNode {
13    let WidgetContext {
14        id,
15        props,
16        named_slots,
17        ..
18    } = context;
19    unpack_named_slots!(named_slots => content);
20
21    let HiddenBoxProps(hidden) = props.read_cloned_or_default();
22
23    if hidden {
24        Default::default()
25    } else {
26        AreaBoxNode {
27            id: id.to_owned(),
28            slot: Box::new(content),
29        }
30        .into()
31    }
32}