use crate::prelude::{AsClasses, ExtendClasses, Inset, Visibility, WithBreakpoints};
use yew::prelude::*;
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
pub enum DividerType {
#[default]
Hr,
Li,
Div,
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
pub enum DividerOrientation {
#[default]
Horizontal,
Vertical,
}
impl AsClasses for DividerOrientation {
fn extend_classes(&self, classes: &mut Classes) {
match self {
Self::Horizontal => classes.push(classes!("pf-m-horizontal")),
Self::Vertical => classes.push(classes!("pf-m-vertical")),
}
}
}
#[derive(Clone, Debug, PartialEq, Eq, Properties)]
pub struct DividerProperties {
#[prop_or_default]
pub r#type: DividerType,
#[prop_or_default]
pub orientation: WithBreakpoints<DividerOrientation>,
#[prop_or_default]
pub inset: WithBreakpoints<Inset>,
#[prop_or_default]
pub visibility: WithBreakpoints<Visibility>,
}
#[function_component(Divider)]
pub fn divider(props: &DividerProperties) -> Html {
let mut class = classes!("pf-v5-c-divider");
class.extend_from(&props.orientation);
class.extend_from(&props.inset);
class.extend_from(&props.visibility);
match props.r#type {
DividerType::Hr => html! (<hr {class} />),
DividerType::Li => html! (<li {class} role="separator"></li>),
DividerType::Div => html! (<div {class} role="separator"></div>),
}
}
#[function_component(ListDivider)]
pub fn list_divider() -> Html {
html!(<Divider r#type={DividerType::Li} />)
}