-
-
- ({
- value: model.id,
- label: model.name,
- model: model
- }))}
- {pinModelHandler}
- {triggerClassName}
- bind:value={selectedModel}
- />
-
+
+
+
+ ({
+ value: model.id,
+ label: model.name,
+ model: model
+ }))}
+ {pinModelHandler}
+ {triggerClassName}
+ {showSetDefault}
+ onSetDefault={saveDefaultModel}
+ multipleEnabled={$user?.role === 'admin' ||
+ ($user?.permissions?.chat?.multiple_models ?? true)}
+ {disabled}
+ bind:compareEnabled={compareModels}
+ bind:values={selectedModels}
+ />
-
- {#if $user?.role === 'admin' || ($user?.permissions?.chat?.multiple_models ?? true)}
- {#if selectedModelIdx === 0}
-
-
-
-
-
- {:else}
-
-
-
-
-
- {/if}
- {/if}
- {/each}
-
-
-{#if showSetDefault}
-
-
-{/if}
+
diff --git a/src/lib/components/chat/ModelSelector/ModelItem.svelte b/src/lib/components/chat/ModelSelector/ModelItem.svelte
index 8b0798a1fc..40b2a481f6 100644
--- a/src/lib/components/chat/ModelSelector/ModelItem.svelte
+++ b/src/lib/components/chat/ModelSelector/ModelItem.svelte
@@ -23,6 +23,8 @@
export let item: any = {};
export let index: number = -1;
export let value: string | null = '';
+ export let selectedValues: string[] = [];
+ export let compareEnabled = false;
export let unloadModelHandler: (modelValue: string) => void = () => {};
export let pinModelHandler: (modelId: string) => void = () => {};
@@ -43,16 +45,17 @@
};
let showMenu = false;
+ $: isSelected = compareEnabled ? selectedValues.includes(item.value) : value === item.value;
@@ -570,8 +620,7 @@
aria-label={$i18n.t('Search In Models')}
on:keydown={(e) => {
if (e.code === 'Enter' && filteredItems.length > 0) {
- value = filteredItems[selectedModelIdx].value;
- show = false;
+ selectItem(filteredItems[selectedModelIdx], selectedModelIdx);
return; // dont need to scroll on selection
} else if (e.code === 'ArrowDown') {
e.stopPropagation();
@@ -592,6 +641,21 @@
});
}}
/>
+
+ {#if multipleEnabled}
+
+ {/if}
{/if}
@@ -740,16 +804,15 @@
{selectedModelIdx}
{item}
{index}
- {value}
+ value={primaryValue}
{pinModelHandler}
{unloadModelHandler}
{deleteModelHandler}
{selectionOnly}
+ {compareEnabled}
+ {selectedValues}
onClick={() => {
- value = item.value;
- selectedModelIdx = index;
-
- show = false;
+ selectItem(item, index);
}}
/>
{/each}
@@ -842,7 +905,19 @@
{/each}