From 98f38f00ffe7bdff5eca00c49eedd7ca120028b2 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sat, 9 Aug 2025 22:50:27 +0400 Subject: [PATCH] enh: shift unpin pinned models --- src/lib/components/icons/PinSlash.svelte | 21 ++++++ src/lib/components/layout/Sidebar.svelte | 2 +- .../layout/Sidebar/PinnedModelItem.svelte | 71 +++++++++++++++++++ .../layout/Sidebar/PinnedModelList.svelte | 51 +++++-------- 4 files changed, 111 insertions(+), 34 deletions(-) create mode 100644 src/lib/components/icons/PinSlash.svelte create mode 100644 src/lib/components/layout/Sidebar/PinnedModelItem.svelte diff --git a/src/lib/components/icons/PinSlash.svelte b/src/lib/components/icons/PinSlash.svelte new file mode 100644 index 0000000000..ab119b0292 --- /dev/null +++ b/src/lib/components/icons/PinSlash.svelte @@ -0,0 +1,21 @@ + + + diff --git a/src/lib/components/layout/Sidebar.svelte b/src/lib/components/layout/Sidebar.svelte index b91d32905a..1b05849f17 100644 --- a/src/lib/components/layout/Sidebar.svelte +++ b/src/lib/components/layout/Sidebar.svelte @@ -817,7 +817,7 @@
{#if ($models ?? []).length > 0 && ($settings?.pinnedModels ?? []).length > 0} - + {/if} {#if $config?.features?.enable_channels && ($user?.role === 'admin' || $channels.length > 0)} diff --git a/src/lib/components/layout/Sidebar/PinnedModelItem.svelte b/src/lib/components/layout/Sidebar/PinnedModelItem.svelte new file mode 100644 index 0000000000..1f58548b52 --- /dev/null +++ b/src/lib/components/layout/Sidebar/PinnedModelItem.svelte @@ -0,0 +1,71 @@ + + +{#if model} + +
{ + mouseOver = true; + }} + on:mouseleave={(e) => { + mouseOver = false; + }} + > + +
+ logo +
+ +
+
+ {model?.name ?? model.id} +
+
+
+ + {#if mouseOver && shiftKey} +
+
+ + + +
+
+ {/if} +
+{/if} diff --git a/src/lib/components/layout/Sidebar/PinnedModelList.svelte b/src/lib/components/layout/Sidebar/PinnedModelList.svelte index 33ff95bb63..298a0da4a4 100644 --- a/src/lib/components/layout/Sidebar/PinnedModelList.svelte +++ b/src/lib/components/layout/Sidebar/PinnedModelList.svelte @@ -6,8 +6,10 @@ import { chatId, mobile, models, settings, showSidebar } from '$lib/stores'; import { WEBUI_BASE_URL } from '$lib/constants'; import { updateUserSettings } from '$lib/apis/users'; + import PinnedModelItem from './PinnedModelItem.svelte'; export let selectedChatId = null; + export let shiftKey = false; const initPinnedModelsSortable = () => { const pinnedModelsList = document.getElementById('pinned-models-list'); @@ -40,39 +42,22 @@ {#each $settings.pinnedModels as modelId (modelId)} {@const model = $models.find((model) => model.id === modelId)} {#if model} - + { + selectedChatId = null; + chatId.set(''); + if ($mobile) { + showSidebar.set(false); + } + }} + onUnpin={() => { + const pinnedModels = $settings.pinnedModels.filter((id) => id !== modelId); + settings.set({ ...$settings, pinnedModels }); + updateUserSettings(localStorage.token, { ui: $settings }); + }} + /> {/if} {/each}