Skip to main content

patternfly_yew/components/progress_stepper/
mod.rs

1mod child;
2mod item;
3mod variant;
4
5use crate::ouia;
6use crate::prelude::{Ouia, OuiaComponentType, OuiaSafe};
7pub use child::*;
8pub use item::*;
9pub use variant::*;
10use yew::html::ChildrenRenderer;
11use yew::prelude::*;
12
13const OUIA: Ouia = ouia!("ProgressStepper");
14
15/// Properties for [`ProgressStepper`]
16#[derive(PartialEq, Properties)]
17pub struct ProgressStepperProperties {
18    #[prop_or_default]
19    pub centered: bool,
20    #[prop_or_default]
21    pub vertical: bool,
22    #[prop_or_default]
23    pub responsive: bool,
24    #[prop_or_default]
25    pub compact: bool,
26    #[prop_or_default]
27    pub children: ChildrenRenderer<ProgressStepperChildVariant>,
28
29    /// OUIA Component id
30    #[prop_or_default]
31    pub ouia_id: Option<String>,
32    /// OUIA Component Type
33    #[prop_or(OUIA.component_type())]
34    pub ouia_type: OuiaComponentType,
35    /// OUIA Component Safe
36    #[prop_or(OuiaSafe::TRUE)]
37    pub ouia_safe: OuiaSafe,
38}
39
40#[component]
41pub fn ProgressStepper(props: &ProgressStepperProperties) -> Html {
42    let ouia_id = use_memo(props.ouia_id.clone(), |id| {
43        id.clone().unwrap_or(OUIA.generated_id())
44    });
45
46    let mut class = classes!("pf-v6-c-progress-stepper");
47
48    if props.centered {
49        class.push(classes!("pf-m-center"));
50    }
51    if props.vertical {
52        class.push(classes!("pf-m-vertical"));
53    }
54    if props.responsive {
55        class.push(classes!("pf-m-vertical-on-lg", "pf-m-horizontal-on-2xl"));
56    }
57    if props.compact {
58        class.push(classes!("pf-m-compact"));
59    }
60
61    html!(
62        <ol
63            {class}
64            data-ouia-component-id={(*ouia_id).clone()}
65            data-ouia-component-type={props.ouia_type}
66            data-ouia-safe={props.ouia_safe}
67        >
68            { for props.children.iter() }
69        </ol>
70    )
71}
72
73#[derive(Clone, Copy, PartialEq)]
74pub enum ProgressStepperStepStatus {
75    Default,
76    Success,
77    Info,
78    Pending,
79    Warning,
80    Danger,
81}