raui_core/widget/component/containers/
hidden_box.rs

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