From 5b41f4549fc2b1431ac5ccd758e78678bfcaef25 Mon Sep 17 00:00:00 2001 From: HugoCasa Date: Wed, 19 Jun 2024 11:35:58 +0200 Subject: [PATCH] fix: handle past inputs with oneOf (#3932) --- frontend/src/lib/components/ArgInput.svelte | 19 +++++++++++++++---- .../lib/components/LightweightArgInput.svelte | 19 +++++++++++++++---- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/frontend/src/lib/components/ArgInput.svelte b/frontend/src/lib/components/ArgInput.svelte index 9acfd573b7..119b23c144 100644 --- a/frontend/src/lib/components/ArgInput.svelte +++ b/frontend/src/lib/components/ArgInput.svelte @@ -2,7 +2,7 @@ import type { EnumType, SchemaProperty } from '$lib/common' import { setInputCat as computeInputCat, emptyString } from '$lib/utils' import { DollarSign, Pipette, Plus, X } from 'lucide-svelte' - import { createEventDispatcher } from 'svelte' + import { createEventDispatcher, tick } from 'svelte' import Multiselect from 'svelte-multiselect' import { fade } from 'svelte/transition' import JsonEditor from './apps/editor/settingsPanel/inputEditor/JsonEditor.svelte' @@ -79,9 +79,20 @@ export let orderEditable = false let oneOfSelected: string | undefined = undefined - function updateOneOfSelected(oneOf: SchemaProperty[] | undefined) { - if (oneOf && oneOf.length >= 2 && !oneOfSelected) { - oneOfSelected = oneOf[0]['title'] + async function updateOneOfSelected(oneOf: SchemaProperty[] | undefined) { + if ( + oneOf && + oneOf.length >= 2 && + (!oneOfSelected || !oneOf.some((o) => o.title === oneOfSelected)) + ) { + if (value && value['label'] && oneOf.some((o) => o.title === value['label'])) { + const existingValue = JSON.parse(JSON.stringify(value)) + oneOfSelected = value['label'] + await tick() + value = existingValue + } else { + oneOfSelected = oneOf[0]['title'] + } } } $: updateOneOfSelected(oneOf) diff --git a/frontend/src/lib/components/LightweightArgInput.svelte b/frontend/src/lib/components/LightweightArgInput.svelte index 9e2833b976..c2939b937b 100644 --- a/frontend/src/lib/components/LightweightArgInput.svelte +++ b/frontend/src/lib/components/LightweightArgInput.svelte @@ -1,7 +1,7 @@