mod color;
mod variant;
use yew::{classes, function_component, html, Html, Properties};
use crate::styles::color::Color;
use crate::styles::CssClass;
pub use variant::Variant;
#[derive(Debug, Clone, PartialEq, Eq, Properties)]
pub struct Props {
#[prop_or_default]
pub color: Color,
#[prop_or_default]
pub style: String,
#[prop_or(0)]
pub value: i32,
#[prop_or_default]
pub value_buffer: Option<i32>,
#[prop_or_default]
pub variant: Variant,
#[prop_or(false)]
pub with_label: bool,
}
#[function_component(LinearProgress)]
pub fn linear_progress(props: &Props) -> Html {
let root_cls = classes!(
"ZuLinearProgress-root",
color::root_class(props.color),
props.variant.css_class(),
if props.variant == Variant::Buffer {
""
} else {
"ZuLinearProgress-noBuffer"
}
);
let _dashed_cls = classes!("ZuLinearProgress-dashed", color::dashed_class(props.color),);
let _bar1_cls = classes!(
"ZuLinearProgress-bar1",
color::bar_class(props.color),
match props.variant {
Variant::Indeterminate | Variant::Query => "ZuLinearProgress-bar1Indeterminate",
Variant::Determinate => "ZuLinearProgress-bar1Determinate",
Variant::Buffer => "ZuLinearProgress-bar1Buffer",
},
);
let _bar2_cls = classes!(
"ZuLinearProgress-bar2",
if props.variant == Variant::Buffer {
color::root_class(props.color)
} else {
color::bar_class(props.color)
},
match props.variant {
Variant::Indeterminate | Variant::Query => "ZuLinearProgress-bar2Indeterminate",
Variant::Buffer => "ZuLinearProgress-bar2Buffer",
Variant::Determinate => "",
}
);
let root_style = "";
html! {
<span class={root_cls} style={root_style}>
</span>
}
}