diff --git a/src/lib/components/chat/Messages.svelte b/src/lib/components/chat/Messages.svelte index 905df62ef8..4d262f3c85 100644 --- a/src/lib/components/chat/Messages.svelte +++ b/src/lib/components/chat/Messages.svelte @@ -1,12 +1,6 @@
- {#each selectedModels as selectedModel, selectedModelIdx} -
-
-
- ({ - 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}
-
+ {#if showSetDefault} +
+ +
+ {:else} +
+ {/if} - +