diff --git a/frontend/src/lib/components/DynSelect.svelte b/frontend/src/lib/components/DynSelect.svelte index 0241ab90f5..93a3bf0ed3 100644 --- a/frontend/src/lib/components/DynSelect.svelte +++ b/frontend/src/lib/components/DynSelect.svelte @@ -1,26 +1,4 @@ - + + {#if helperScript} -
-
- {#key renderCount} - { - error = e.detail.details - }} - on:change={(e) => { - value = e.detail.value - }} - {value} - computeOnClick={value == undefined} - loadOptions={getItemsFromOptions} - inputStyles={SELECT_INPUT_DEFAULT_STYLE.inputStyles} - containerStyles={darkMode - ? SELECT_INPUT_DEFAULT_STYLE.containerStylesDark - : SELECT_INPUT_DEFAULT_STYLE.containerStyles} - /> - {/key} -
- {#if error} -
error: {JSON.stringify(error)}
+ -
- -
- {#if loading} - - {/if} - - {#if showClear} - - {/if} - - {#if showChevron} - - {/if} -
- - - - - - {#if required && (!value || value.length === 0)} - - - - {/if} - - - diff --git a/frontend/src/lib/components/apps/svelte-select/lib/index.js b/frontend/src/lib/components/apps/svelte-select/lib/index.js deleted file mode 100644 index 80d0787c5f..0000000000 --- a/frontend/src/lib/components/apps/svelte-select/lib/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default as default } from './SelectLegacy.svelte' diff --git a/frontend/src/lib/components/select/MultiSelect.svelte b/frontend/src/lib/components/select/MultiSelect.svelte index 171528078e..e94a3cb72f 100644 --- a/frontend/src/lib/components/select/MultiSelect.svelte +++ b/frontend/src/lib/components/select/MultiSelect.svelte @@ -74,7 +74,7 @@ }) let valueEntry = $derived( - value.map((v) => processedItems.find((item) => item.value === v)!).filter(Boolean) + value.map((v) => processedItems.find((item) => item.value === v) ?? { value: v, label: v }) ) function onAddValue(item: ProcessedItem) { diff --git a/frontend/src/lib/components/select/Select.svelte b/frontend/src/lib/components/select/Select.svelte index ec0a4dcc47..69fb7bf16c 100644 --- a/frontend/src/lib/components/select/Select.svelte +++ b/frontend/src/lib/components/select/Select.svelte @@ -4,7 +4,7 @@ import CloseButton from '../common/CloseButton.svelte' import { Loader2 } from 'lucide-svelte' import { untrack } from 'svelte' - import { processItems, type ProcessedItem } from './utils.svelte' + import { getLabel, processItems, type ProcessedItem } from './utils.svelte' import SelectDropdown from './SelectDropdown.svelte' import { deepEqual } from 'fast-equals' @@ -14,7 +14,7 @@ items, placeholder = 'Please select', value = $bindable(), - filterText: _filterTextBind = $bindable(undefined), + filterText = $bindable(''), class: className = '', clearable = false, listAutoWidth = true, @@ -27,6 +27,7 @@ RightIcon, createText, noItemsMsg, + open = $bindable(false), groupBy, sortBy, onFocus, @@ -50,6 +51,7 @@ RightIcon?: any createText?: string noItemsMsg?: string + open?: boolean groupBy?: (item: Item) => string sortBy?: (a: Item, b: Item) => number onFocus?: () => void @@ -60,8 +62,6 @@ let disabled = $derived(_disabled || loading) - let filterText = $state('') - let open = $state(false) let inputEl: HTMLInputElement | undefined = $state() let processedItems: ProcessedItem[] = $derived.by(() => { @@ -69,13 +69,6 @@ return untrack(() => processItems(args)) }) - $effect(() => { - if (_filterTextBind !== undefined) filterText = _filterTextBind - }) - $effect(() => { - if (_filterTextBind !== undefined) _filterTextBind = filterText - }) - $effect(() => { if (filterText) open = true }) @@ -128,12 +121,12 @@ {disabled} type="text" bind:value={() => filterText, (v) => (filterText = v)} - placeholder={loading ? 'Loading...' : (valueEntry?.label ?? placeholder)} + placeholder={loading ? 'Loading...' : (valueEntry?.label ?? getLabel({ value }) ?? placeholder)} style={containerStyle} class={twMerge( '!bg-surface text-ellipsis', open ? '' : 'cursor-pointer', - valueEntry && !loading ? '!placeholder-primary' : '', + value && !loading ? '!placeholder-primary' : '', (clearable || RightIcon) && !disabled && value ? '!pr-8' : '', inputClass ?? '' )} diff --git a/frontend/src/lib/components/select/SelectDropdown.svelte b/frontend/src/lib/components/select/SelectDropdown.svelte index 7780828a70..a589bc22ff 100644 --- a/frontend/src/lib/components/select/SelectDropdown.svelte +++ b/frontend/src/lib/components/select/SelectDropdown.svelte @@ -137,7 +137,7 @@ onSelectValue(item) }} > - {item.label} + {item.label || '\xa0'} {/each} diff --git a/frontend/src/lib/components/wizards/AppPicker.svelte b/frontend/src/lib/components/wizards/AppPicker.svelte index 6dd15edf18..b0369d3c96 100644 --- a/frontend/src/lib/components/wizards/AppPicker.svelte +++ b/frontend/src/lib/components/wizards/AppPicker.svelte @@ -1,16 +1,14 @@
- { - value = e.detail.value - }} - on:clear={() => { - value = '' - }} - bind:value={selecteValue} - items={apps.map((app) => { - return { - value: app.path, - label: app.path === $appPath ? `${app.path} (current app)` : app.path - } - })} +