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