use crate::components::title::{title, Title};
use crate::utils::types::SharedAppState;
use crate::{rumtk_web_params_map, ComponentResult, RUMWebTemplate, RUMWebTemplateSafe, PARAMS_TITLE};
use rumtk_core::strings::RUMString;
#[derive(RUMWebTemplate, Debug, Clone)]
#[template(
source = "
<button onclick='{{ function }}({{args}})'>
{{title | safe}}
</button>
",
ext = "html"
)]
pub struct Button {
title: Title,
function: RUMString,
args: RUMString,
}
impl RUMWebTemplateSafe for Button {}
pub fn button<'a>(text: &str, function: &str, args: &str, state: SharedAppState) -> ComponentResult<Button> {
let params = rumtk_web_params_map!([(PARAMS_TITLE, text)]);
let title = title(&[], params.get_inner(), state)?;
Ok(Button {
title,
function: function.to_string(),
args: args.to_string(),
})
}