dialtone_yew 0.1.0

Dialtone Yew Webapp
use yew::prelude::*;

#[derive(Properties, PartialEq, Clone)]
pub struct DtButtonProps {
    pub text: String,
    pub disabled: bool,
    pub on_click: Callback<()>,
    pub id: String,
    pub in_progress: bool,
}

#[function_component(DtButton)]
pub fn dt_button(
    DtButtonProps {
        text,
        disabled,
        on_click,
        id,
        in_progress,
    }: &DtButtonProps,
) -> Html {
    let mut button_classes = vec!["dt_button".to_string()];
    if *in_progress {
        button_classes.push("dt_button_in_progress".to_string());
    }
    let click_handler = {
        let on_click = on_click.clone();
        Callback::from(move |_| on_click.emit(()))
    };
    let html = html! {
        <button id={id.clone()} class={classes!(button_classes)} onclick={click_handler} disabled={*disabled}>{text}</button>
    };
    html
}