From 203727de3eecb76983fdb16003329ac16755ed8c Mon Sep 17 00:00:00 2001 From: xds Date: Tue, 25 Nov 2025 01:30:53 +0300 Subject: [PATCH] feat: Add category transactions modal and expandable category list to the dashboard. --- src/App.vue | 67 ++++---- src/assets/theme.css | 8 +- .../dashboard/CategoryTransactionsModal.vue | 127 +++++++++++++++ src/components/dashboard/DashboardCharts.vue | 148 ++++++++++++++---- src/components/dashboard/DashboardView.vue | 91 ++++++++++- src/models/dashboard.ts | 1 + src/services/transactions-service.ts | 3 +- 7 files changed, 371 insertions(+), 74 deletions(-) create mode 100644 src/components/dashboard/CategoryTransactionsModal.vue diff --git a/src/App.vue b/src/App.vue index d438510..ad5769d 100644 --- a/src/App.vue +++ b/src/App.vue @@ -3,13 +3,13 @@ import SpaceList from "@/components/space-list/SpaceList.vue"; import Toolbar from "@/components/Toolbar.vue"; import Toast from "primevue/toast"; import ProgressSpinner from "primevue/progressspinner"; -import {useSpaceStore} from "@/stores/spaceStore"; -import {useToolbarStore} from "@/stores/toolbar-store"; +import { useSpaceStore } from "@/stores/spaceStore"; +import { useToolbarStore } from "@/stores/toolbar-store"; import router from "@/router"; -import {useRoute} from "vue-router"; -import {computed, onBeforeUnmount, onMounted, ref, watch} from "vue"; -import {useToast} from "primevue/usetoast"; -import {useUserStore} from "@/stores/userStore"; +import { useRoute } from "vue-router"; +import { computed, onBeforeUnmount, onMounted, ref, watch } from "vue"; +import { useToast } from "primevue/usetoast"; +import { useUserStore } from "@/stores/userStore"; const spaceStore = useSpaceStore(); const toolbarStore = useToolbarStore(); @@ -25,13 +25,13 @@ const isTelegram = computed(() => !!tgApp); const isSpaceSelectorVisible = ref(false); const isSpaceSelected = computed( - () => spaceStore.selectedSpaceId === undefined || isSpaceSelectorVisible.value + () => spaceStore.selectedSpaceId === undefined || isSpaceSelectorVisible.value ); const menu = [ - {name: "Dashboard", icon: "pi pi-chart-bar", link: "/", navStack: 'dashboard'}, - {name: "Transactions", icon: "pi pi-list", link: "/transactions", navStack: 'transactions'}, - {name: "Settings", icon: "pi pi-cog", link: "/settings", navStack: 'settings'}, + { name: "Dashboard", icon: "pi pi-chart-bar", link: "/", navStack: 'dashboard' }, + { name: "Transactions", icon: "pi pi-list", link: "/transactions", navStack: 'transactions' }, + { name: "Settings", icon: "pi pi-cog", link: "/settings", navStack: 'settings' }, ]; function spaceSelected() { @@ -124,8 +124,8 @@ onMounted(async () => { // 🔁 следим за изменением маршрута watch( - () => route.path, - () => setupBackButton() + () => route.path, + () => setupBackButton() ); onBeforeUnmount(() => { @@ -138,54 +138,43 @@ onBeforeUnmount(() => {