diff --git a/packages/wyatt_form_bloc/lib/src/data/form_operations/form_difference.dart b/packages/wyatt_form_bloc/lib/src/data/form_operations/form_difference.dart index 14a78d9c..ec77e957 100644 --- a/packages/wyatt_form_bloc/lib/src/data/form_operations/form_difference.dart +++ b/packages/wyatt_form_bloc/lib/src/data/form_operations/form_difference.dart @@ -30,12 +30,6 @@ class FormDifference extends FormOperation { FormInput, dynamic>>[]; - for (final i in b.inputs) { - if (!a.containsKey(i.key)) { - inputs.add(i); - } - } - for (final i in a.inputs) { if (!b.containsKey(i.key)) { inputs.add(i); diff --git a/packages/wyatt_form_bloc/lib/src/data/form_operations/form_intersection.dart b/packages/wyatt_form_bloc/lib/src/data/form_operations/form_intersection.dart index 2c1d4cb6..332a7bd1 100644 --- a/packages/wyatt_form_bloc/lib/src/data/form_operations/form_intersection.dart +++ b/packages/wyatt_form_bloc/lib/src/data/form_operations/form_intersection.dart @@ -32,7 +32,11 @@ class FormIntersection extends FormOperation { for (final i in a.inputs) { if (b.containsKey(i.key)) { - inputs.add(i); + if (i.validator.pure) { + inputs.add(b.inputOf(i.key)); + } else { + inputs.add(i); + } } } diff --git a/packages/wyatt_form_bloc/lib/src/data/form_operations/form_union.dart b/packages/wyatt_form_bloc/lib/src/data/form_operations/form_union.dart index a466750b..91725e13 100644 --- a/packages/wyatt_form_bloc/lib/src/data/form_operations/form_union.dart +++ b/packages/wyatt_form_bloc/lib/src/data/form_operations/form_union.dart @@ -37,6 +37,13 @@ class FormUnion extends FormOperation { for (final i in b.inputs) { if (!a.containsKey(i.key)) { inputs.add(i); + } else { + // if a input is pure, but not b, replace a one with b + if (a.isPureInput(i.key)) { + inputs + ..remove(a.inputOf(i.key)) + ..add(i); + } } }