mod accordion_item;
pub use accordion_item::*;
use leptos::{context::Provider, prelude::*};
use std::collections::HashSet;
use thaw_utils::{class_list, Model};
#[component]
pub fn Accordion(
#[prop(optional, into)] class: MaybeProp<String>,
#[prop(optional, into)]
open_items: Model<HashSet<String>>,
#[prop(optional)]
multiple: bool,
#[prop(optional)]
collapsible: bool,
children: Children,
) -> impl IntoView {
view! {
<Provider value=AccordionInjection {
open_items,
collapsible,
multiple,
}>
<div class=class_list!["thaw-accordion", class]>{children()}</div>
</Provider>
}
}
#[derive(Clone)]
pub(crate) struct AccordionInjection {
pub open_items: Model<HashSet<String>>,
pub multiple: bool,
pub collapsible: bool,
}
impl AccordionInjection {
pub fn expect_context() -> AccordionInjection {
expect_context()
}
}