patternfly_yew/components/progress_stepper/
mod.rs1mod 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#[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 #[prop_or_default]
31 pub ouia_id: Option<String>,
32 #[prop_or(OUIA.component_type())]
34 pub ouia_type: OuiaComponentType,
35 #[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}