patternfly_yew/components/
divider.rs1use crate::prelude::{AsClasses, ExtendClasses, Inset, Visibility, WithBreakpoints};
4use yew::prelude::*;
5
6#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
7pub enum DividerType {
8 #[default]
10 Hr,
11 Li,
13 Div,
15}
16
17#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
18pub enum DividerOrientation {
19 #[default]
20 Horizontal,
21 Vertical,
22}
23
24impl AsClasses for DividerOrientation {
25 fn extend_classes(&self, classes: &mut Classes) {
26 match self {
27 Self::Horizontal => classes.push(classes!("pf-m-horizontal")),
28 Self::Vertical => classes.push(classes!("pf-m-vertical")),
29 }
30 }
31}
32
33#[derive(Clone, Debug, PartialEq, Eq, Properties)]
35pub struct DividerProperties {
36 #[prop_or_default]
37 pub r#type: DividerType,
38 #[prop_or_default]
39 pub orientation: WithBreakpoints<DividerOrientation>,
40 #[prop_or_default]
41 pub inset: WithBreakpoints<Inset>,
42 #[prop_or_default]
43 pub visibility: WithBreakpoints<Visibility>,
44}
45
46#[function_component(Divider)]
56pub fn divider(props: &DividerProperties) -> Html {
57 let mut class = classes!("pf-v5-c-divider");
58
59 class.extend_from(&props.orientation);
60 class.extend_from(&props.inset);
61 class.extend_from(&props.visibility);
62
63 match props.r#type {
64 DividerType::Hr => html! (<hr {class} />),
65 DividerType::Li => html! (<li {class} role="separator"></li>),
66 DividerType::Div => html! (<div {class} role="separator"></div>),
67 }
68}
69
70#[function_component(ListDivider)]
79pub fn list_divider() -> Html {
80 html!(<Divider r#type={DividerType::Li} />)
81}