From 52ecceadf7a7886762b464d576d445dfd0a9da2e Mon Sep 17 00:00:00 2001 From: Davide Di Pumpo Date: Wed, 3 Dec 2025 23:32:38 +0100 Subject: [PATCH] fix: preserve user selections when updating tag defaults in OmegaTaggedUnionInternal --- .changeset/silver-animals-buy.md | 5 +++++ .../src/components/OmegaForm/OmegaTaggedUnionInternal.vue | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 .changeset/silver-animals-buy.md 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 }