windjammer_ui/components/generated/
collapsible.rs

1#![allow(clippy::all)]
2#![allow(noop_method_call)]
3use super::traits::Renderable;
4
5pub struct CollapsibleSection {
6    title: String,
7    content: String,
8    open: bool,
9}
10
11impl CollapsibleSection {
12    #[inline]
13    pub fn new(title: String, content: String) -> CollapsibleSection {
14        CollapsibleSection {
15            title,
16            content,
17            open: false,
18        }
19    }
20    #[inline]
21    pub fn open(mut self, open: bool) -> CollapsibleSection {
22        self.open = open;
23        self
24    }
25}
26
27impl Renderable for CollapsibleSection {
28    #[inline]
29    fn render(self) -> String {
30        let icon = {
31            if self.open {
32                "▼"
33            } else {
34                "▶"
35            }
36        };
37        let content_style = {
38            if self.open {
39                "display: block;"
40            } else {
41                "display: none;"
42            }
43        };
44        format!(
45            "<div class='wj-collapsible'>
46  <div class='wj-collapsible-header'>
47    <span class='wj-collapsible-icon'>{}</span>
48    <span>{}</span>
49  </div>
50  <div class='wj-collapsible-content' style='{}'>
51    {}
52  </div>
53</div>",
54            icon, self.title, content_style, self.content
55        )
56    }
57}