generated from mitchell/rust_template
35 lines
894 B
Rust
35 lines
894 B
Rust
use leptos::View;
|
|
|
|
use super::{ControlRenderData, VanityControlBuilder, VanityControlData};
|
|
use crate::{
|
|
form::{FormBuilder, FormData},
|
|
styles::FormStyle,
|
|
};
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
|
|
pub struct SubmitData {
|
|
pub(crate) text: String,
|
|
}
|
|
|
|
impl VanityControlData for SubmitData {
|
|
fn build_control<FS: FormStyle>(fs: &FS, control: ControlRenderData<FS, Self>) -> View {
|
|
fs.submit(control)
|
|
}
|
|
}
|
|
|
|
impl<FD: FormData, FS: FormStyle> FormBuilder<FD, FS> {
|
|
pub fn submit(
|
|
self,
|
|
builder: impl Fn(VanityControlBuilder<FS, SubmitData>) -> VanityControlBuilder<FS, SubmitData>,
|
|
) -> Self {
|
|
self.new_vanity(builder)
|
|
}
|
|
}
|
|
|
|
impl<FS: FormStyle> VanityControlBuilder<FS, SubmitData> {
|
|
pub fn text(mut self, text: impl ToString) -> Self {
|
|
self.data.text = text.to_string();
|
|
self
|
|
}
|
|
}
|