Skip to content

Commit a695621

Browse files
committed
fix: improve oneOf arg input reactivity to value changes
1 parent d58ca9b commit a695621

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

frontend/src/lib/components/ArgInput.svelte

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -135,13 +135,17 @@
135135
}
136136
}
137137
}
138-
function updateOneOfSelectedValue(oneOfSelected: string | undefined) {
139-
if (oneOfSelected) {
140-
value = { label: oneOfSelected }
138+
139+
$: updateOneOfSelected(oneOf)
140+
141+
$: oneOf && value && onOneOfChange()
142+
143+
function onOneOfChange() {
144+
const label = value?.['label']
145+
if (label && oneOf && oneOf.some((o) => o.title == label) && oneOfSelected != label) {
146+
oneOfSelected = label
141147
}
142148
}
143-
$: updateOneOfSelected(oneOf)
144-
$: updateOneOfSelectedValue(oneOfSelected)
145149
146150
const dispatch = createEventDispatcher()
147151
@@ -791,8 +795,14 @@
791795
selected={oneOfSelected}
792796
on:selected={({ detail }) => {
793797
oneOfSelected = detail
794-
value = { label: detail }
795-
redraw += 1
798+
const prevValueKeys = Object.keys(
799+
oneOf.find((o) => o.title == detail)?.properties ?? {}
800+
)
801+
const toKeep = {}
802+
for (const key of prevValueKeys) {
803+
toKeep[key] = value[key]
804+
}
805+
value = { ...toKeep, label: detail }
796806
}}
797807
let:item
798808
>

0 commit comments

Comments
 (0)