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(Debug, Clone, PartialEq, Default)]
pub struct Slider {
    pub min: f64,
    pub max: f64,
    pub step: f64,
    pub value: f64,
    pub disabled: bool,
    pub label: String,
}

impl Slider {
    #[inline]
    pub fn new() -> Slider {
        Slider {
            min: 0.0,
            max: 100.0,
            step: 1.0,
            value: 50.0,
            disabled: false,
            label: "".to_string(),
        }
    }
    #[inline]
    pub fn min(mut self, min: f64) -> Slider {
        self.min = min;
        self
    }
    #[inline]
    pub fn max(mut self, max: f64) -> Slider {
        self.max = max;
        self
    }
    #[inline]
    pub fn step(mut self, step: f64) -> Slider {
        self.step = step;
        self
    }
    #[inline]
    pub fn value(mut self, value: f64) -> Slider {
        self.value = value;
        self
    }
    #[inline]
    pub fn disabled(mut self, disabled: bool) -> Slider {
        self.disabled = disabled;
        self
    }
    #[inline]
    pub fn label(mut self, label: String) -> Slider {
        self.label = label;
        self
    }
}

impl Renderable for Slider {
    #[inline]
    fn render(self) -> String {
        let disabled_attr = {
            if self.disabled {
                " disabled".to_string()
            } else {
                "".to_string()
            }
        };
        let label_html = {
            if self.label != "" {
                format!("{}{}{}", "<label>".to_string(), self.label, "</label>")
            } else {
                "".to_string()
            }
        };
        format!(
            "{}<input type='range' class='wj-slider' min='{}' max='{}' step='{}' value='{}'{}>",
            label_html, self.min, self.max, self.step, self.value, disabled_attr
        )
    }
}