From 0a6e34d8d3ffcaf123cb23e7d3be60d85774a68b Mon Sep 17 00:00:00 2001 From: Aleksander Grygier Date: Thu, 24 Sep 2026 10:25:54 +0200 Subject: [PATCH] ui : keep the collapsed model sections and families in local storage Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash --- .../app/misc/CollapsibleSection.svelte | 18 ++++--- .../components/app/misc/GroupedList.svelte | 19 +++++-- .../ModelsManagerModelsTable.svelte | 2 + .../app/models/ModelsSection.svelte | 7 ++- .../ModelsSelector/ModelsSelectorList.svelte | 18 +++++-- .../ui/src/lib/constants/storage.constants.ts | 3 ++ .../ui/src/lib/stores/models/index.svelte.ts | 51 ++++++++++++++++++- 7 files changed, 98 insertions(+), 20 deletions(-) diff --git a/tools/ui/src/lib/components/app/misc/CollapsibleSection.svelte b/tools/ui/src/lib/components/app/misc/CollapsibleSection.svelte index 91dd003381..68e4e9b7cb 100644 --- a/tools/ui/src/lib/components/app/misc/CollapsibleSection.svelte +++ b/tools/ui/src/lib/components/app/misc/CollapsibleSection.svelte @@ -17,6 +17,8 @@ defaultOpen?: boolean; /** Controlled open state, for a caller that binds it. */ open?: boolean; + /** Called on every toggle, for a caller that persists the state. */ + ontoggle?: ((open: boolean) => void) | null; /** Extra classes for the chevron, to line it up with a row's own control. */ chevronClass?: string; /** Hide the chevron while expanded, until the trigger is hovered. */ @@ -32,6 +34,7 @@ children, defaultOpen = true, inMenu = false, + ontoggle = null, open = $bindable(defaultOpen), revealChevronOnHover = false, trigger, @@ -39,6 +42,11 @@ triggerPosition = 'top', triggerStyle = '' }: Props = $props(); + + function toggle(): void { + open = !open; + ontoggle?.(open); + } {#snippet chevron()} @@ -65,13 +73,7 @@ > {#snippet child({ props })} -