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 { vec![] } fn extended_class(&self) -> Vec { self.base_class() } fn render_with_class(&self, class: &str) -> Markup { html! { img src=(self.src) alt=(self.alt) class=(class) {}; } } }