feat(mobile-navigation-improvements): Complete US-213 - Actualizare Hamburger Menu în toate paginile

Implemented by Ralph autonomous loop.
Iteration: 10

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Claude Agent
2026-01-12 12:36:45 +00:00
parent dc137711ae
commit 4c5d2956d8
10 changed files with 146 additions and 207 deletions

View File

@@ -6,36 +6,16 @@
title="Facturi"
:show-menu="true"
:actions="mobileTopBarActions"
@menu-click="toggleMobileMenu"
@menu-click="showDrawer = true"
@action-click="handleTopBarAction"
/>
<!-- US-107: Mobile Hamburger Menu -->
<Sidebar v-model:visible="mobileMenuVisible" position="left" class="mobile-sidebar">
<template #header>
<div class="sidebar-header">
<span class="sidebar-title">ROA2WEB</span>
</div>
</template>
<div class="sidebar-menu">
<router-link to="/data-entry" class="sidebar-item">
<i class="pi pi-receipt"></i>
<span>Bonuri</span>
</router-link>
<router-link to="/reports/invoices" class="sidebar-item active">
<i class="pi pi-file-text"></i>
<span>Facturi</span>
</router-link>
<router-link to="/reports/dashboard" class="sidebar-item">
<i class="pi pi-chart-bar"></i>
<span>Rapoarte</span>
</router-link>
<router-link to="/settings" class="sidebar-item">
<i class="pi pi-cog"></i>
<span>Setări</span>
</router-link>
</div>
</Sidebar>
<!-- Mobile Drawer Menu (replaces old Sidebar) -->
<MobileDrawerMenu
v-model="showDrawer"
:user="authStore.user"
@logout="handleLogout"
/>
<!-- US-107: Filter BottomSheet for mobile -->
<BottomSheet v-model="showFilters">
@@ -395,7 +375,7 @@
<script setup>
import { ref, computed, onMounted, onUnmounted, watch } from "vue";
import { useToast } from "primevue/usetoast";
import { useCompanyStore } from "@reports/stores/sharedStores";
import { useCompanyStore, useAuthStore } from "@reports/stores/sharedStores";
import { useInvoicesStore } from "@reports/stores/invoices";
import { useAccountingPeriodStore } from "@reports/stores/sharedStores";
import { format } from "date-fns";
@@ -406,12 +386,15 @@ import { exportToExcel, exportToPDF } from "@reports/utils/exportUtils";
import MobileTopBar from "@shared/components/mobile/MobileTopBar.vue";
import MobileBottomNav from "@shared/components/mobile/MobileBottomNav.vue";
import BottomSheet from "@shared/components/mobile/BottomSheet.vue";
import Sidebar from "primevue/sidebar";
import MobileDrawerMenu from "@shared/components/mobile/MobileDrawerMenu.vue";
import { useRouter } from "vue-router";
const toast = useToast();
const router = useRouter();
const companyStore = useCompanyStore();
const invoicesStore = useInvoicesStore();
const periodStore = useAccountingPeriodStore();
const authStore = useAuthStore();
// State
const selectedCompanyId = ref(companyStore.selectedCompany?.id_firma || null);
@@ -419,12 +402,13 @@ const selectedCompanyId = ref(companyStore.selectedCompany?.id_firma || null);
// Mobile state
const isMobile = ref(window.innerWidth < 768);
const showFilters = ref(false);
const mobileMenuVisible = ref(false);
const showDrawer = ref(false);
const actionsMenu = ref(null);
// US-107: Toggle mobile hamburger menu
const toggleMobileMenu = () => {
mobileMenuVisible.value = !mobileMenuVisible.value;
// Handle logout from drawer menu
const handleLogout = async () => {
await authStore.logout();
router.push('/login');
};
// US-107: Mobile TopBar actions (refresh + export)