diff --git a/.changeset/silver-animals-buy.md b/.changeset/silver-animals-buy.md new file mode 100644 index 000000000..bee12facb --- /dev/null +++ b/.changeset/silver-animals-buy.md @@ -0,0 +1,5 @@ +--- +"@effect-app/vue-components": patch +--- + +fix: preserve user selections when updating tag defaults in OmegaTaggedUnionInternal diff --git a/packages/vue-components/src/components/OmegaForm/OmegaTaggedUnionInternal.vue b/packages/vue-components/src/components/OmegaForm/OmegaTaggedUnionInternal.vue index 30a2c8553..48ca4c3e4 100644 --- a/packages/vue-components/src/components/OmegaForm/OmegaTaggedUnionInternal.vue +++ b/packages/vue-components/src/components/OmegaForm/OmegaTaggedUnionInternal.vue @@ -34,8 +34,11 @@ watch(() => props.state, (newTag, oldTag) => { nextTick(() => { // Get default values for the new tag to ensure correct types const tagDefaults = (props.form as any).unionDefaultValues?.[newTag as string] ?? {} - // Merge: keep _tag from current values, but use tag defaults for other fields + // Get current form values to preserve user's selections (e.g., carrier) + const currentValues = props.form.state.values + // Merge: keep current values, override with tag defaults for type correctness, set new _tag const resetValues = { + ...currentValues, ...tagDefaults, _tag: newTag }