50 lines
916 B
Rust
50 lines
916 B
Rust
use crate::ui::UIWidget;
|
|
use maud::{Markup, Render, html};
|
|
|
|
#[allow(non_snake_case)]
|
|
#[must_use]
|
|
pub fn Image(src: &str) -> ImageWidget {
|
|
ImageWidget {
|
|
src: src.to_owned(),
|
|
alt: String::new(),
|
|
}
|
|
}
|
|
|
|
pub struct ImageWidget {
|
|
src: String,
|
|
alt: String,
|
|
}
|
|
|
|
impl Render for ImageWidget {
|
|
fn render(&self) -> Markup {
|
|
self.render_with_class("")
|
|
}
|
|
}
|
|
|
|
impl ImageWidget {
|
|
#[must_use]
|
|
pub fn alt(mut self, alt: &str) -> Self {
|
|
self.alt = alt.to_string();
|
|
self
|
|
}
|
|
}
|
|
|
|
impl UIWidget for ImageWidget {
|
|
fn can_inherit(&self) -> bool {
|
|
true
|
|
}
|
|
|
|
fn base_class(&self) -> Vec<String> {
|
|
vec![]
|
|
}
|
|
|
|
fn extended_class(&self) -> Vec<String> {
|
|
self.base_class()
|
|
}
|
|
|
|
fn render_with_class(&self, class: &str) -> Markup {
|
|
html! {
|
|
img src=(self.src) alt=(self.alt) class=(class) {};
|
|
}
|
|
}
|
|
}
|