use crate::backend::data::ApiResponse; use crate::components::modal_box::{DialogOpener, ModalBody, ModalDialog, ModalFooter}; use leptos::*; use leptos::server_fn::client::browser::BrowserClient; use leptos::server_fn::codec::{Json, PostUrl}; use leptos::server_fn::error::NoCustomError; use leptos::server_fn::ServerFn; use leptos_router::*; use serde::de::DeserializeOwned; use validator::Validate; use crate::components::server_err::ServerErr; use crate::components::validation_err::ValidationErr; use crate::locales::trl; use crate::validator::Validator; pub trait ForValidation { fn entity(&self) -> &dyn Validate; } #[component] pub fn data_form> + DeserializeOwned + ForValidation>( opener: DialogOpener, action: Action, ServerFnError>>, title: &'static str, children: Children ) -> impl IntoView { let upd_val = action.value(); let validator = Validator::new(); view! { {children()} } } #[component] pub fn question_dialog> + DeserializeOwned + Clone>( opener: DialogOpener, action: Action, ServerFnError>>, title: &'static str, children: Children ) -> impl IntoView { let upd_val = action.value(); view! { {children()} } }