use dioxus::prelude::*;
#[derive(Props, Clone, PartialEq)]
pub struct EmptyProps {
#[props(default)]
pub image: Option<String>,
#[props(default)]
pub image_size: Option<u32>,
#[props(default = "No Data".to_string())]
pub description: String,
#[props(default)]
pub class: Option<String>,
#[props(default)]
pub style: Option<String>,
}
#[component]
pub fn Empty(props: EmptyProps) -> Element {
let mut class_names = vec!["el-empty".to_string()];
if let Some(ref custom_class) = props.class {
class_names.push(custom_class.clone());
}
let class_string = class_names.join(" ");
let image_style = props
.image_size
.map(|size| format!("width: {}px", size))
.unwrap_or_default();
rsx! {
div {
class: "{class_string}",
style: props.style.clone().unwrap_or_default(),
div {
class: "el-empty__image",
style: "{image_style}",
if let Some(ref img) = props.image {
img { src: "{img}" }
} else {
div {
class: "el-empty__image-svg",
style: "width: 100%; height: 100%; min-height: 60px; display: flex; align-items: center; justify-content: center; color: var(--el-text-color-secondary); opacity: 0.5;",
"ðŸ“"
}
}
}
p {
class: "el-empty__description",
"{props.description}"
}
}
}
}