impulse_thaw/accordion/
mod.rs1mod accordion_item;
2
3pub use accordion_item::*;
4
5use leptos::{context::Provider, prelude::*};
6use std::collections::HashSet;
7use thaw_utils::{class_list, Model};
8
9#[component]
10pub fn Accordion(
11 #[prop(optional, into)] class: MaybeProp<String>,
12 #[prop(optional, into)]
14 open_items: Model<HashSet<String>>,
15 #[prop(optional)]
17 multiple: bool,
18 #[prop(optional)]
20 collapsible: bool,
21 children: Children,
22) -> impl IntoView {
23 view! {
24 <Provider value=AccordionInjection {
25 open_items,
26 collapsible,
27 multiple,
28 }>
29 <div class=class_list!["thaw-accordion", class]>{children()}</div>
30 </Provider>
31 }
32}
33
34#[derive(Clone)]
35pub(crate) struct AccordionInjection {
36 pub open_items: Model<HashSet<String>>,
37 pub multiple: bool,
38 pub collapsible: bool,
39}
40
41impl AccordionInjection {
42 pub fn expect_context() -> AccordionInjection {
43 expect_context()
44 }
45}