use super::{BuilderFn, ControlBuilder, ControlData, ControlRenderData}; use crate::{form::FormToolData, form_builder::FormBuilder, styles::FormStyle}; use leptos::{Signal, View}; #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)] pub struct CheckboxData { pub name: String, pub label: Option, } impl ControlData for CheckboxData { type ReturnType = bool; fn build_control( fs: &FS, control: ControlRenderData, value_getter: Signal, value_setter: Box, _validation_state: Signal>, ) -> View { fs.checkbox(control, value_getter, value_setter) } } impl FormBuilder { pub fn checkbox( self, builder: impl BuilderFn, FD::Context>, ) -> Self { self.new_control(builder) } } impl ControlBuilder { pub fn named(mut self, control_name: impl ToString) -> Self { self.data.name = control_name.to_string(); self } pub fn labeled(mut self, label: impl ToString) -> Self { self.data.label = Some(label.to_string()); self } }