windjammer_ui/components/generated/
checkbox.rs1#![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}