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 AlertVariant {
    Error,
    Warning,
    Info,
    Success,
}

#[derive(Debug, Clone, PartialEq)]
pub struct Alert {
    pub message: String,
    pub variant: AlertVariant,
}

impl Alert {
    #[inline]
    pub fn error(message: String) -> Alert {
        Alert {
            message,
            variant: AlertVariant::Error,
        }
    }
    #[inline]
    pub fn warning(message: String) -> Alert {
        Alert {
            message,
            variant: AlertVariant::Warning,
        }
    }
    #[inline]
    pub fn info(message: String) -> Alert {
        Alert {
            message,
            variant: AlertVariant::Info,
        }
    }
    #[inline]
    pub fn success(message: String) -> Alert {
        Alert {
            message,
            variant: AlertVariant::Success,
        }
    }
}

impl Renderable for Alert {
    #[inline]
    fn render(self) -> String {
        let variant_class = match self.variant {
            AlertVariant::Error => "wj-alert-error".to_string(),
            AlertVariant::Warning => "wj-alert-warning".to_string(),
            AlertVariant::Info => "wj-alert-info".to_string(),
            AlertVariant::Success => "wj-alert-success".to_string(),
        };
        let icon = match self.variant {
            AlertVariant::Error => "".to_string(),
            AlertVariant::Warning => "⚠️".to_string(),
            AlertVariant::Info => "ℹ️".to_string(),
            AlertVariant::Success => "".to_string(),
        };
        format!(
            "<div class='wj-alert {}'>{} {}</div>",
            variant_class, icon, self.message
        )
    }
}