use super::*;
#[derive(Clone, Debug)]
pub struct TableOfContentsArray(pub Vec<TableOfContentsItem>);
#[derive(Clone, Debug)]
pub struct TableOfContentsItem(pub Html, pub Vec<Html>);
impl Renderable for TableOfContentsArray {
fn render(&self) -> Html {
let items: Html = self.0.iter().map(|e| e.render()).collect();
html! {
<nav class="toc">
<div class="catalog-title">{"Table of Contents"}</div>
<div class="catalog-body"><ul class="catalog-list">{items}</ul></div>
</nav>
}
}
}
impl Renderable for TableOfContentsItem {
fn render(&self) -> Html {
let title = self.0.clone();
if self.1.is_empty() {
return html! {<li class="item d1">{title}</li>};
}
let items: Html = self.1.clone().into_iter().map(|e| html! {<li class="item d2">{e}</li>}).collect();
html! {<li class="item d1">{title}<ul class="sub-list">{items}</ul></li>}
}
}