use leptos::prelude::*;
use super::alert_dialog_ui::{
AlertDialog as AlertDialogUi,
AlertDialogTrigger,
AlertDialogOverlay,
AlertDialogContent,
AlertDialogTitle,
AlertDialogDescription,
AlertDialogClose
};
use crate::ui::button::ButtonVariant;
#[component]
pub fn AlertDialog(
#[prop(optional)] children: Option<Children>,
#[prop(into, default = String::from("Delete"))] trigger_label: String,
#[prop(into, default = String::from("Confirm"))] confirm_label: String,
#[prop(into, default = String::from("Cancel"))] cancel_label: String,
#[prop(into, optional)] title: Option<String>,
#[prop(into, optional)] description: Option<String>,
#[prop(into, default = String::new())] class: String,
) -> impl IntoView {
view! {
<AlertDialogUi class=class>
<AlertDialogTrigger variant=ButtonVariant::Destructive>
{trigger_label
};
</AlertDialogTrigger>
<AlertDialogOverlay />
<AlertDialogContent>
{title.map(|t| view! { <AlertDialogTitle>{t}</AlertDialogTitle> })}
{description.map(|d| view! { <AlertDialogDescription>{d}</AlertDialogDescription> })}
{children.map(|c| c())}
<div data-rs-alert-dialog-actions="">
<AlertDialogClose variant=ButtonVariant::Outline>
{cancel_label}
</AlertDialogClose>
<AlertDialogClose variant=ButtonVariant::Destructive>
{confirm_label}
</AlertDialogClose>
</div>
</AlertDialogContent>
</AlertDialogUi>
}
}