dioxus_bootstrap_css/
collapse.rs1use dioxus::prelude::*;
2
3#[derive(Clone, PartialEq, Props)]
15pub struct CollapseProps {
16 pub expanded: Signal<bool>,
18 #[props(default)]
20 pub horizontal: bool,
21 #[props(default)]
23 pub class: String,
24 pub children: Element,
26}
27
28#[component]
29pub fn Collapse(props: CollapseProps) -> Element {
30 let is_expanded = *props.expanded.read();
31
32 let horizontal = if props.horizontal {
33 " collapse-horizontal"
34 } else {
35 ""
36 };
37
38 let show = if is_expanded { " show" } else { "" };
39
40 let full_class = if props.class.is_empty() {
41 format!("collapse{horizontal}{show}")
42 } else {
43 format!("collapse{horizontal}{show} {}", props.class)
44 };
45
46 rsx! {
47 div { class: "{full_class}",
48 {props.children}
49 }
50 }
51}