raui_core/widget/component/containers/
hidden_box.rs1use 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}