minor fixes

This commit is contained in:
2024-04-19 17:29:18 -05:00
parent 40dc1d8cdc
commit bc1216ef26
2 changed files with 10 additions and 7 deletions
+8 -5
View File
@@ -231,7 +231,7 @@ impl<FD: FormData, FS: FormStyle> FormBuilder<FD, FS> {
let fd = builder.fd.clone();
let value_setter = move |value| {
// TODO: also do this on a submit somehow
let parsed = match parse_fn(&value) {
let parsed = match parse_fn(value) {
Ok(p) => p,
Err(e) => {
validation_signal_set.set(Err(e));
@@ -242,14 +242,17 @@ impl<FD: FormData, FS: FormStyle> FormBuilder<FD, FS> {
// parse succeeded, update value and validate
let field_fn = field_fn.clone(); // move
let validation_fn = validation_fn.clone(); // move
// TODO: change this to a get then set, so that if the validation fails,
// The value is not actually updated
fd.update(move |fd| {
let field = field_fn(fd);
*field = parsed;
validation_fn
.as_ref()
.and_then(|vfn| vfn(fd).err())
.map(|e| validation_signal_set.set(Err(e)));
if let Some(ref validation_fn) = validation_fn {
let validation_result = (validation_fn)(fd);
validation_signal_set.set(validation_result);
}
});
};
let value_setter = Box::new(value_setter);