windjammer_ui/components/generated/
hamburgermenu.rs1#![allow(clippy::all)]
2#![allow(noop_method_call)]
3use super::traits::Renderable;
4
5#[derive(Debug, Clone, PartialEq, Eq, Hash, Default)]
6pub struct HamburgerMenuItem {
7 pub label: String,
8 pub href: String,
9}
10
11impl HamburgerMenuItem {
12 #[inline]
13 pub fn new(label: String, href: String) -> HamburgerMenuItem {
14 HamburgerMenuItem { label, href }
15 }
16}
17
18#[derive(Debug, Clone, Default)]
19pub struct HamburgerMenu {
20 pub items: Vec<HamburgerMenuItem>,
21 pub open: bool,
22}
23
24impl HamburgerMenu {
25 #[inline]
26 pub fn new() -> HamburgerMenu {
27 HamburgerMenu {
28 items: Vec::new(),
29 open: false,
30 }
31 }
32 #[inline]
33 pub fn item(mut self, item: HamburgerMenuItem) -> HamburgerMenu {
34 self.items.push(item);
35 self
36 }
37 #[inline]
38 pub fn open(mut self, open: bool) -> HamburgerMenu {
39 self.open = open;
40 self
41 }
42}
43
44impl Renderable for HamburgerMenu {
45 #[inline]
46 fn render(self) -> String {
47 let mut items_html = Vec::new();
48 for item in &self.items {
49 items_html.push(format!(
50 "<a href='{}' class='wj-hamburger-item'>{}</a>",
51 item.href.clone(),
52 item.label.clone()
53 ));
54 }
55 let open_class = {
56 if self.open {
57 " wj-hamburger-open".to_string()
58 } else {
59 "".to_string()
60 }
61 };
62 format!("<div class='wj-hamburger-menu{}'>
63 <button class='wj-hamburger-button' onclick='this.parentElement.classList.toggle(\"wj-hamburger-open\")'>
64 <span></span>
65 <span></span>
66 <span></span>
67 </button>
68 <div class='wj-hamburger-drawer'>
69 {}
70 </div>
71 </div>", open_class, items_html.join(""))
72 }
73}