<script lang="ts"> import type { ListItem } from '$lib/Utils'; // @ts-expect-error Svelecte 3 does not have types, and 4 (which does) is pending stabilization import Svelecte from 'svelecte'; let inputId: string; let valueAsObject = false; let multiple = false; type Item = number | string | ListItem; type Value = Item | Item[] | undefined | null; export let clearable = false; export let placeholder = 'Select...'; export let options: ListItem[] | undefined; export let value: Value; export { inputId as id, valueAsObject as object, multiple as multi }; function optionsPlaceholder(from: Value): Item[] { if (from === undefined || from === null) return []; return Array.isArray(from) ? from : [from]; } </script> {#if options !== null && options !== undefined} <Svelecte virtualList valueField="id" labelField="name" {options} {multiple} {clearable} {inputId} {valueAsObject} {placeholder} bind:value /> {:else} <Svelecte virtualList valueField="id" labelField="name" disabled options={optionsPlaceholder(value)} {multiple} {clearable} {inputId} {valueAsObject} {placeholder} {value} /> {/if}