based/src/ui/primitives/image.rs
2025-01-15 18:53:55 +01:00

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) {};
}
}
}