diff --git a/src/components/text_field.rs b/src/components/text_field.rs index 7577503..3897525 100644 --- a/src/components/text_field.rs +++ b/src/components/text_field.rs @@ -9,7 +9,7 @@ pub fn OutlinedTextField( // #[prop()] value: Subfield, #[prop(into)] data_member: String, // should this be an RwSignal?? #[prop(optional)] data_map: RwSignal>, - #[prop()] value: RwSignal, + #[prop(optional)] value: RwSignal, #[prop(default = "text".to_owned(), into)] input_type: String, #[prop(optional)] disabled: RwSignal, #[prop(optional)] error: RwSignal, @@ -21,6 +21,7 @@ pub fn OutlinedTextField( // valid types, and parses them accordingly. let on_input = { let input_type = input_type.clone(); + let data_member = data_member.clone(); move |e| { let to_parse = event_target_value(&e); match input_type.as_str() { @@ -31,6 +32,7 @@ pub fn OutlinedTextField( value.set(ValueType::String(Some(to_parse.clone()))); data_map.update(|map| { if let Some(val) = map.get_mut(&data_member) { + *val = ValueType::String(Some(to_parse)); } else { map.insert(data_member.clone(), ValueType::String(Some(to_parse))); @@ -84,7 +86,13 @@ pub fn OutlinedTextField( disabled={disabled} placeholder={placeholder} prop:name=name - prop:value={move || value.get().to_string()} // Sets the initial value. + prop:value={ + data_map + .get() // HashMap + .get(&data_member) // Option + .unwrap_or(&ValueType::String(None)) // ValueType + .to_string() + } on:input=on_input />
impl IntoView { let store_info = Store::new(submission.clone()); let expandable = ExpandableInfo::new("email".into()); let expandable_react = expandable.as_reactive(); + expandable_react.data.update(|map| { + map.insert("email".into(), ValueType::String(Some("test@region15.org".into()))); + map.insert("phone_number".into(), ValueType::String(Some("123456789-10".into()))); + map.insert("math_sat".into(), ValueType::Number(Some(1234))); + }); let reactive_info = submission.as_reactive(); let elements_disabled = RwSignal::new(false); let result_msg = Signal::derive(move || {