yew_bs/components/
visibility.rs

1use yew::prelude::*;
2#[derive(Clone, Copy, PartialEq, Debug)]
3pub enum VisibilityType {
4    Visible,
5    Invisible,
6}
7impl VisibilityType {
8    pub fn as_str(&self) -> &'static str {
9        match self {
10            VisibilityType::Visible => "visible",
11            VisibilityType::Invisible => "invisible",
12        }
13    }
14}
15/// Props for the Visibility component
16#[derive(Properties, PartialEq)]
17pub struct VisibilityProps {
18    /// Visibility state to apply
19    pub visibility: VisibilityType,
20    /// The child elements to be shown/hidden
21    #[prop_or_default]
22    pub children: Children,
23    /// Additional CSS classes to apply
24    #[prop_or_default]
25    pub class: Option<AttrValue>,
26}
27/// A utility component for applying Bootstrap visibility utilities
28///
29/// The Visibility component provides easy access to Bootstrap's visibility
30#[function_component(Visibility)]
31pub fn visibility(props: &VisibilityProps) -> Html {
32    let mut classes = Classes::new();
33    classes.push(props.visibility.as_str());
34    if let Some(custom_class) = &props.class {
35        classes.push(custom_class.to_string());
36    }
37    html! {
38        < div class = { classes } > { for props.children.iter() } </ div >
39    }
40}