patternfly_dioxus/
accordion.rs1use dioxus::prelude::*;
2
3#[allow(non_snake_case,dead_code)]
4#[inline_props]
5pub fn PfAccordion<'a>(
6 cx: Scope<'a>,
7 children: Element<'a>,
8 title: &'a str,
9 is_open: Option<bool>,
10) -> Element {
11 let default_open_flag = !is_open.unwrap_or(false);
12 let is_close_accordion = use_state(&cx, || default_open_flag);
13 let buttoncss = if *is_close_accordion.get() {
14 "pf-c-accordion__toggle"
15 } else {
16 "pf-c-accordion__toggle pf-m-expanded"
17 };
18 cx.render(rsx! {
19 div {class: "pf-c-accordion",
20 h3 {
21 button { class: "{buttoncss} ", r#type: "button", aria_expanded: "false",
22 onclick: move |_| { is_close_accordion.set(!is_close_accordion.get()); },
23
24 span { class: "pf-c-accordion__toggle-text", "{title}" },
25 span { class: "pf-c-accordion__toggle-icon",
26 i { class: "fas fa-angle-right", aria_hidden: "false" }
27 }
28 }
29 }
30 div { class: "pf-c-accordion__expanded-content pf-m-expanded",
31 div { class: "pf-c-accordion__expanded-content-body", hidden:"{is_close_accordion}" , children, }
32 }
33 }
34 })
35}