windjammer_ui/components/generated/
messagelist.rs

1#![allow(clippy::all)]
2#![allow(noop_method_call)]
3use super::traits::Renderable;
4
5pub struct MessageList {
6    messages: Vec<String>,
7    height: String,
8    auto_scroll: bool,
9}
10
11impl MessageList {
12    #[inline]
13    pub fn new() -> MessageList {
14        MessageList {
15            messages: Vec::new(),
16            height: String::from("600px".to_string()),
17            auto_scroll: true,
18        }
19    }
20    #[inline]
21    pub fn message(mut self, message: String) -> MessageList {
22        self.messages.push(message);
23        self
24    }
25    #[inline]
26    pub fn height(mut self, height: String) -> MessageList {
27        self.height = height;
28        self
29    }
30    #[inline]
31    pub fn auto_scroll(mut self, auto_scroll: bool) -> MessageList {
32        self.auto_scroll = auto_scroll;
33        self
34    }
35}
36
37impl Renderable for MessageList {
38    #[inline]
39    fn render(self) -> String {
40        let scroll_script = {
41            if self.auto_scroll {
42                "onload='this.scrollTop = this.scrollHeight'"
43            } else {
44                ""
45            }
46        };
47        format!(
48            "<div class='wj-message-list' style='height: {}' {}>
49                {}
50            </div>",
51            self.height,
52            scroll_script,
53            self.messages.join("")
54        )
55    }
56}