diff --git a/src/lib/components/common/Valves.svelte b/src/lib/components/common/Valves.svelte index cd398b0038..3db92400c3 100644 --- a/src/lib/components/common/Valves.svelte +++ b/src/lib/components/common/Valves.svelte @@ -27,10 +27,19 @@ class="p-1 px-3 text-xs flex rounded-sm transition" type="button" on:click={() => { - valves[property] = - (valves[property] ?? null) === null - ? (valvesSpec.properties[property]?.default ?? '') - : null; + const propertySpec = valvesSpec.properties[property] ?? {}; + + if ((valves[property] ?? null) === null) { + // Initialize to custom value + if ((propertySpec?.type ?? null) === 'array') { + const defaultArray = propertySpec?.default ?? []; + valves[property] = Array.isArray(defaultArray) ? defaultArray.join(', ') : ''; + } else { + valves[property] = propertySpec?.default ?? ''; + } + } else { + valves[property] = null; + } dispatch('change'); }} diff --git a/src/lib/components/workspace/common/ValvesModal.svelte b/src/lib/components/workspace/common/ValvesModal.svelte index 30085ac89c..577ce2eb04 100644 --- a/src/lib/components/workspace/common/ValvesModal.svelte +++ b/src/lib/components/workspace/common/ValvesModal.svelte @@ -52,7 +52,14 @@ // Convert string to array for (const property in valvesSpec.properties) { if (valvesSpec.properties[property]?.type === 'array') { - valves[property] = (valves[property] ?? '').split(',').map((v) => v.trim()); + if (typeof valves[property] === 'string') { + valves[property] = (valves[property] ?? '') + .split(',') + .map((v) => v.trim()) + .filter((v) => v.length > 0); + } else if (valves[property] == null) { + valves[property] = null; + } } } @@ -120,10 +127,15 @@ } if (valvesSpec) { - // Convert array to string for (const property in valvesSpec.properties) { if (valvesSpec.properties[property]?.type === 'array') { - valves[property] = (valves[property] ?? []).join(','); + if (valves[property] != null) { + valves[property] = (Array.isArray(valves[property]) ? valves[property] : []).join( + ',' + ); + } else { + valves[property] = null; + } } } }