From 5634a8d3558716b2a8858b446d36ab5876bb2996 Mon Sep 17 00:00:00 2001 From: Abdenasser Date: Sat, 9 Nov 2024 20:22:05 +0100 Subject: [PATCH] persistent config between sessions" --- package-lock.json | 4 ++-- src/lib/components/ToolBar.svelte | 38 +++++++++++++++++++++++++++++-- src/lib/stores/config.ts | 36 +++++++++++++++++++++++++++++ src/lib/types/config.ts | 37 ++++++++++++++++++++++++++++++ src/routes/+page.svelte | 18 +++++++++++---- vite.config.js | 1 - 6 files changed, 125 insertions(+), 9 deletions(-) create mode 100644 src/lib/stores/config.ts create mode 100644 src/lib/types/config.ts diff --git a/package-lock.json b/package-lock.json index cabd2f6..0bc1c33 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "macos-task-manager", - "version": "1.0.5", + "version": "1.0.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "macos-task-manager", - "version": "1.0.5", + "version": "1.0.8", "license": "MIT", "dependencies": { "@fortawesome/fontawesome-svg-core": "^6.6.0", diff --git a/src/lib/components/ToolBar.svelte b/src/lib/components/ToolBar.svelte index 8238b54..80c16ff 100644 --- a/src/lib/components/ToolBar.svelte +++ b/src/lib/components/ToolBar.svelte @@ -8,6 +8,8 @@ faChevronDown, faChevronRight, } from "@fortawesome/free-solid-svg-icons"; + import { configStore } from "$lib/stores/config"; + import type { AppConfig } from "$lib/types/config"; export let searchTerm: string; export let statusFilter: string = "all"; export let itemsPerPage: number; @@ -46,6 +48,26 @@ currentPage = page; } } + + function handleColumnVisibilityChange(columnId: string, visible: boolean) { + configStore.updateConfig({ + appearance: { + columnVisibility: { + ...$configStore.appearance.columnVisibility, + [columnId]: visible, + }, + }, + }); + } + + function updateBehaviorConfig(key: keyof AppConfig["behavior"], value: any) { + configStore.updateConfig({ + behavior: { + ...$configStore.behavior, + [key]: value, + }, + }); + }
@@ -66,7 +88,12 @@
- + updateBehaviorConfig("defaultStatusFilter", statusFilter)} + class="select-input" + > {#each statusOptions as option} {/each} @@ -79,6 +106,7 @@ + handleColumnVisibilityChange( + column.id, + e.currentTarget.checked, + )} /> {column.label} @@ -161,6 +194,7 @@