use super::{BuilderFn, ControlBuilder, ControlData, ControlRenderData, ValidatedControlData}; use crate::{form::FormToolData, form_builder::FormBuilder, styles::FormStyle}; use leptos::{Signal, View}; use std::rc::Rc; #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default)] pub struct TextAreaData { pub name: String, pub placeholder: Option, } impl ControlData for TextAreaData { type ReturnType = String; fn build_control( fs: &FS, control: Rc>, value_getter: Signal, value_setter: Rc, validation_state: Signal>, ) -> View { fs.text_area(control, value_getter, value_setter, validation_state) } } impl ValidatedControlData for TextAreaData {} impl FormBuilder { pub fn text_area( self, builder: impl BuilderFn, FD::Context>, ) -> Self { self.new_control(builder) } } impl ControlBuilder { pub fn placeholder(mut self, placeholder: impl ToString) -> Self { self.data.placeholder = Some(placeholder.to_string()); self } }