use crate::locales::trl; use leptos::*; use crate::app::DialogHelper; use crate::validator::Validator; #[derive(Copy, Clone)] pub struct DialogOpener { visible: ReadSignal, set_visible: WriteSignal, empty: ReadSignal, set_empty: WriteSignal, not_checked: ReadSignal>, set_not_checked: WriteSignal>, show_err: RwSignal } impl DialogOpener { pub fn new() -> Self { let (visible, set_visible) = create_signal(false); let (empty, set_empty) = create_signal("".to_string()); let (not_checked, set_not_checked) = create_signal(None); let show_err = create_rw_signal(false); DialogOpener { visible, set_visible, empty, set_empty, not_checked, set_not_checked, show_err } } pub fn visible(&self) -> bool { self.visible.get() } pub fn show(&self) { let dlg_helper = use_context::().expect("No dialog helper"); dlg_helper.set_opened(true); self.set_visible.update(|state| *state = true); } pub fn hide(&self) { let dlg_helper = use_context::().expect("No dialog helper"); dlg_helper.set_opened(false); self.set_visible.update(|state| *state = false); self.set_empty.set("".to_string()); self.set_not_checked.set(None); self.show_err.set(false); } pub fn empty(&self) -> String { self.empty.get() } pub fn not_checked(&self) -> Option { self.not_checked.get() } pub fn show_err(&self) -> bool { self.show_err.get() } pub fn display_err(&self) { self.show_err.set(true); } } #[component] pub fn ModalDialog( opener: DialogOpener, title: &'static str, #[prop(optional)] validator: Option, children: Children, ) -> impl IntoView { view! { } } #[component] pub fn ModalBody(children: Children) -> impl IntoView { view! { } } #[component] pub fn ModalFooter(children: Children) -> impl IntoView { view! { } } #[component] pub fn DlgNotLoaded(opener: DialogOpener, title: &'static str) -> impl IntoView { view! {
{trl("Entity not loaded")}
} }