use yew::prelude::*;
use crate::Size;
#[derive(Clone, Debug, Properties, PartialEq)]
pub struct TagProps {
#[prop_or_default]
pub children: Children,
#[prop_or_default]
pub classes: Classes,
#[prop_or_else(|| "span".into())]
pub tag: String,
#[prop_or_default]
pub onclick: Callback<MouseEvent>,
#[prop_or_default]
pub rounded: bool,
#[prop_or_default]
pub delete: bool,
#[prop_or_default]
pub size: Option<Size>,
}
#[function_component(Tag)]
pub fn tag(props: &TagProps) -> Html {
let class = classes!(
"tag",
props.classes.clone(),
props.rounded.then_some("is-rounded"),
props.delete.then_some("is-delete"),
props.size.as_ref().map(|size| size.to_string()),
);
html! {
<@{props.tag.clone()} {class} onclick={props.onclick.clone()}>
{props.children.clone()}
</@>
}
}
#[derive(Clone, Debug, Properties, PartialEq)]
pub struct TagsProps {
#[prop_or_default]
pub children: Children,
#[prop_or_default]
pub classes: Classes,
#[prop_or_default]
pub has_addons: bool,
}
#[function_component(Tags)]
pub fn tags(props: &TagsProps) -> Html {
let class = classes!("tags", props.classes.clone(), props.has_addons.then_some("has-addons"));
html! {
<div {class}>
{props.children.clone()}
</div>
}
}