use yew::{
classes, function_component, html, AttrValue, Callback, Children, Classes, Event, Html,
Properties,
};
use crate::paper::{Elevation, Paper, Variant, ELEVATION_DEFAULT};
#[derive(Debug, Clone, PartialEq, Properties)]
pub struct Props {
#[prop_or_default]
pub children: Children,
#[prop_or_default]
pub classes: Classes,
#[prop_or(false)]
pub default_expanded: bool,
#[prop_or(false)]
pub disabled: bool,
#[prop_or(false)]
pub disable_gutters: bool,
pub expanded: bool,
pub on_change: Callback<(Event, bool), ()>,
#[prop_or(false)]
pub square: bool,
#[prop_or_default]
pub style: AttrValue,
#[prop_or(ELEVATION_DEFAULT)]
pub elevation: Elevation,
#[prop_or_default]
pub variant: Variant,
}
#[function_component(Accordion)]
pub fn accordion(props: &Props) -> Html {
let root_cls = classes!(
"ZuAccordion-root",
if props.square {
""
} else {
"ZuAccordion-rounded"
},
if props.expanded {
"ZuAccordion-expanded"
} else {
""
},
if props.disabled {
"ZuAccordion-disabled"
} else {
""
},
if props.disable_gutters {
""
} else {
"ZuAccordion-gutters"
},
props.classes.clone(),
);
let region_cls = "ZuAccordion-region";
html! {
<Paper classes={root_cls}
style={&props.style}
square={props.square}>
<div class={region_cls} role="region">
{for props.children.iter()}
</div>
</Paper>
}
}