windjammer-ui 0.3.6

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

use super::traits::Renderable;

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

#[derive(Debug, Clone, PartialEq)]
pub struct Spinner {
    pub size: SpinnerSize,
    pub label: String,
}

impl Spinner {
    #[inline]
    pub fn new() -> Spinner {
        Spinner {
            size: SpinnerSize::Medium,
            label: "".to_string(),
        }
    }
    #[inline]
    pub fn size(mut self, size: SpinnerSize) -> Spinner {
        self.size = size;
        self
    }
    #[inline]
    pub fn label(mut self, label: String) -> Spinner {
        self.label = label;
        self
    }
}

impl Renderable for Spinner {
    #[inline]
    fn render(self) -> String {
        let size_class = match self.size {
            SpinnerSize::Small => "wj-spinner-sm".to_string(),
            SpinnerSize::Medium => "wj-spinner-md".to_string(),
            SpinnerSize::Large => "wj-spinner-lg".to_string(),
        };
        let spinner_html = {
            let mut __s = String::with_capacity(64);
            write!(&mut __s, "<div class='wj-spinner {}'></div>", size_class).unwrap();
            __s
        };
        if self.label != "" {
            format!("<div class='wj-spinner-container'>{}<span class='wj-spinner-label'>{}</span></div>", spinner_html, self.label)
        } else {
            spinner_html
        }
    }
}