windjammer_ui/components/generated/
checkbox.rs

1#![allow(clippy::all)]
2#![allow(noop_method_call)]
3use super::traits::Renderable;
4
5pub enum CheckboxSize {
6    Small,
7    Medium,
8    Large,
9}
10
11pub struct Checkbox {
12    label: String,
13    checked: bool,
14    disabled: bool,
15    size: CheckboxSize,
16}
17
18impl Checkbox {
19    #[inline]
20    pub fn new(label: String) -> Checkbox {
21        Checkbox {
22            label,
23            checked: false,
24            disabled: false,
25            size: CheckboxSize::Medium,
26        }
27    }
28    #[inline]
29    pub fn checked(mut self, checked: bool) -> Checkbox {
30        self.checked = checked;
31        self
32    }
33    #[inline]
34    pub fn disabled(mut self, disabled: bool) -> Checkbox {
35        self.disabled = disabled;
36        self
37    }
38    #[inline]
39    pub fn size(mut self, size: CheckboxSize) -> Checkbox {
40        self.size = size;
41        self
42    }
43}
44
45impl Renderable for Checkbox {
46    #[inline]
47    fn render(self) -> String {
48        let size_class = match self.size {
49            CheckboxSize::Small => "sm",
50            CheckboxSize::Medium => "md",
51            CheckboxSize::Large => "lg",
52        };
53        let checked_attr = {
54            if self.checked {
55                " checked"
56            } else {
57                ""
58            }
59        };
60        let disabled_attr = {
61            if self.disabled {
62                " disabled"
63            } else {
64                ""
65            }
66        };
67        format!("<label class='wj-checkbox wj-checkbox-{}'><input type='checkbox'{}{}/><span>{}</span></label>", size_class, checked_attr, disabled_attr, self.label)
68    }
69}