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