patternfly_yew/components/
visible.rs1use crate::prelude::attr_value_to_static_cow;
2use implicit_clone::unsync::IString;
3use yew::prelude::*;
4
5#[derive(PartialEq, Properties)]
7pub struct VisibleProperties {
8 pub visible: bool,
10
11 #[prop_or_default]
13 pub children: Html,
14
15 #[prop_or_default]
17 pub class: Classes,
18 #[prop_or_default]
19 pub style: Option<AttrValue>,
20 #[prop_or_default]
21 pub id: Option<AttrValue>,
22
23 #[prop_or("div".into())]
25 pub element: IString,
26}
27
28#[function_component(Visible)]
59pub fn visible(props: &VisibleProperties) -> Html {
60 let mut class = match props.visible {
61 true => classes!(),
62 false => classes!("pf-v5-u-display-none"),
63 };
64
65 class.extend(&props.class);
66
67 html!(
68 <@{attr_value_to_static_cow(&props.element)}
69 {class}
70 style={props.style.clone()}
71 id={props.id.clone()}
72 >
73 { props.children.clone() }
74 </@>
75 )
76}
77
78#[cfg(test)]
79mod test {
80 use super::*;
81
82 #[test]
83 fn test_ele() {
84 let element: String = "div".into();
85 let _ = html!(<Visible visible={true} {element} / >);
86 let _ = html!(<Visible visible={true} element={"div"} / >);
87 }
88}