diff --git a/frontend/src/lib/components/DynSelect.svelte b/frontend/src/lib/components/DynSelect.svelte index 83a85d7cd7..9bf56a1589 100644 --- a/frontend/src/lib/components/DynSelect.svelte +++ b/frontend/src/lib/components/DynSelect.svelte @@ -18,7 +18,7 @@ import type { Script } from '$lib/gen' import { usePromise } from '$lib/svelte5Utils.svelte' import { deepEqual } from 'fast-equals' - import JobLoader from './JobLoader.svelte' + import JobLoader, { type Callbacks } from './JobLoader.svelte' import Select from './select/Select.svelte' import Tooltip from './Tooltip.svelte' import { Loader2 } from 'lucide-svelte' @@ -45,25 +45,27 @@ async function getItemsFromOptions() { return new Promise<{ label: string; value: any }[]>((resolve, reject) => { - let cb = { - done(res) { - if (!res || !Array.isArray(res)) { + let cb: Callbacks = { + doneResult({ result }) { + if (!result || !Array.isArray(result)) { reject('Result was not an array') return } - if (res.length == 0) resolve([]) - if (res.every((x) => typeof x == 'string')) { - res = res.map((x) => ({ label: x, value: x })) - } else if (res.find((x) => validSelectObject(x) != undefined)) { - reject(validSelectObject(res.find((x) => validSelectObject(x) != undefined))) + if (result.length == 0) resolve([]) + if (result.every((x) => typeof x == 'string')) { + result = result.map((x) => ({ label: x, value: x })) + } else if (result.find((x) => validSelectObject(x) != undefined)) { + reject(validSelectObject(result.find((x) => validSelectObject(x) != undefined))) } else { if (filterText != undefined && filterText != '') - res = res.filter((x) => x['label'].includes(filterText)) - resolve(res) + result = result.filter((x) => x['label'].includes(filterText)) + resolve(result) } }, cancel: () => reject(), - error: (err) => reject(err) + doneError({ id, error }) { + reject(error) + }, } helperScript?.type == 'inline' ? resultJobLoader?.runPreview( @@ -97,7 +99,7 @@ {#if helperScript} - +