use crate::assets::dialog_styles::DIALOG_STYLES;
use crate::DialogWithoutButtonProps;
#[allow(non_snake_case)]
use dioxus::prelude::*;
#[component]
pub fn Dialog(mut props: DialogWithoutButtonProps) -> Element {
rsx! {
style { "{DIALOG_STYLES}" }
div {
if *props.show_modal.read() {
div { class: "dialog-overlay",
div {
class: if props.wrap_class.is_empty() {
"dialog-wrap".to_string()
} else {
props.wrap_class.clone()
},
button {
class: "dialog-close-icon",
onclick: move |_| props.show_modal.set(false),
svg {
xmlns: "http://www.w3.org/2000/svg",
fill: "none",
view_box: "0 0 24 24",
stroke_width: "2",
stroke: "currentColor",
class: if let Some(class) = &props.cross_svg_class {
class.to_string()
} else {
"dialog-cross-svg".to_string()
},
path {
stroke_linecap: "round",
stroke_linejoin: "round",
d: "M6 18L18 6M6 6l12 12",
}
}
}
if let Some(content) = &props.dialog_content {
div { class: "dialog-body", {content} }
} else {
p { class: "dialog-placeholder", "You may add some text here." }
}
div { class: "dialog-actions",
button {
class: if let Some(class) = &props.close_button_class {
class.to_string()
} else {
"dialog-close-button"
},
onclick: move |_| props.show_modal.set(false),
if let Some(label) = &props.close_button_label {
{label.clone()}
} else {
"Close"
}
}
}
}
}
}
}
}
}