fix: handle past inputs with oneOf (#3932)

This commit is contained in:
HugoCasa
2024-06-19 11:35:58 +02:00
committed by GitHub
parent 8751e7a44b
commit 5b41f4549f
2 changed files with 30 additions and 8 deletions
+15 -4
View File
@@ -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)
@@ -1,7 +1,7 @@
<script lang="ts">
import { setInputCat as computeInputCat, emptyString } from '$lib/utils'
import { Badge, Button } from './common'
import { createEventDispatcher } from 'svelte'
import { createEventDispatcher, tick } from 'svelte'
import FieldHeader from './FieldHeader.svelte'
import type { EnumType, SchemaProperty } from '$lib/common'
import autosize from '$lib/autosize'
@@ -56,9 +56,20 @@
export let placeholder: string | undefined = undefined
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)