windjammer-ui 0.3.6

Cross-platform UI framework for Windjammer (Web, Desktop, Mobile)
Documentation
#![allow(clippy::all)]
#![allow(noop_method_call)]
use super::traits::Renderable;

#[derive(Clone, Debug, PartialEq, Copy)]
pub enum BadgeVariant {
    Default,
    Primary,
    Success,
    Warning,
    Danger,
    Error,
    Info,
}

#[derive(Clone, Debug, PartialEq, Copy)]
pub enum BadgeSize {
    Small,
    Medium,
    Large,
}

#[derive(Debug, Clone, PartialEq)]
pub struct Badge {
    pub text: String,
    pub variant: BadgeVariant,
    pub size: BadgeSize,
}

impl Badge {
    #[inline]
    pub fn new(text: String) -> Badge {
        Badge {
            text,
            variant: BadgeVariant::Default,
            size: BadgeSize::Medium,
        }
    }
    #[inline]
    pub fn variant(mut self, variant: BadgeVariant) -> Badge {
        self.variant = variant;
        self
    }
    #[inline]
    pub fn size(mut self, size: BadgeSize) -> Badge {
        self.size = size;
        self
    }
}

impl Renderable for Badge {
    #[inline]
    fn render(self) -> String {
        let variant_class = match self.variant {
            BadgeVariant::Default => "wj-badge-default".to_string(),
            BadgeVariant::Primary => "wj-badge-primary".to_string(),
            BadgeVariant::Success => "wj-badge-success".to_string(),
            BadgeVariant::Warning => "wj-badge-warning".to_string(),
            BadgeVariant::Danger => "wj-badge-danger".to_string(),
            BadgeVariant::Error => "wj-badge-danger".to_string(),
            BadgeVariant::Info => "wj-badge-info".to_string(),
        };
        let size_class = match self.size {
            BadgeSize::Small => "wj-badge-sm".to_string(),
            BadgeSize::Medium => "wj-badge-md".to_string(),
            BadgeSize::Large => "wj-badge-lg".to_string(),
        };
        format!(
            "<span class='wj-badge {} {}'>{}</span>",
            variant_class, size_class, self.text
        )
    }
}