From e734f0f839d897af9317a180d0bdc49d35d05e33 Mon Sep 17 00:00:00 2001 From: PascalMarchesseault <97350299+PascalMarchesseault@users.noreply.github.com> Date: Wed, 26 Jun 2024 02:43:10 -0400 Subject: [PATCH] Side menu interaction added, condition of use moved. --- src/App.vue | 127 +++++++++++++++++++++------------ src/eventBus.js | 3 + src/views/main/Header.vue | 121 +++++++++---------------------- src/views/main/SideBar.vue | 111 ++++++++++++++-------------- src/views/main/SiteMenu.vue | 81 +++++++-------------- src/views/manualusers/ARPS.vue | 91 +++++++++++++++++++---- 6 files changed, 277 insertions(+), 257 deletions(-) create mode 100644 src/eventBus.js diff --git a/src/App.vue b/src/App.vue index 5314a5f..9ceb4b3 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,55 +1,54 @@ @@ -58,40 +57,76 @@ import Header from "@/views/main/Header.vue"; import Footer from "@/views/main/Footer.vue"; import SideBar from "@/views/main/SideBar.vue"; -import {useRoute} from 'vue-router' -import {ref, onMounted, onUnmounted, computed} from 'vue'; +import {ref, onMounted, onUnmounted} from 'vue'; import StripePayment from "@/views/StripePayment.vue"; +import {eventBus} from '@/eventBus.js'; -const route = useRoute() -const hideSideBar = computed(() => route.meta.hideSideBar === true) - -// Reactive variable to control the visibility of the popup +const hideSideBar = ref(false); const showPopup = ref(false); const popup = ref(null); const popupButton = ref(null); +let closeSidebarTimer = null; -// Function to toggle the popup visibility -const togglePopup = () => { - showPopup.value = !showPopup.value +const toggleSidebar = () => { + hideSideBar.value = !hideSideBar.value; +}; + +const openSidebar = () => { + clearCloseSidebarTimer(); + hideSideBar.value = false; +}; + +const startCloseSidebarTimer = () => { + closeSidebarTimer = setTimeout(() => { + hideSideBar.value = true; + }, 500); +}; + +const clearCloseSidebarTimer = () => { + clearTimeout(closeSidebarTimer); +}; + +const togglePopup = () => { + showPopup.value = !showPopup.value; }; -// Function to handle clicks outside the popup const handleClickOutside = (event) => { - if (popup.value - && !popup.value.contains(event.target) - && !popupButton.value.contains(event.target)) { + if ( + popup.value && + !popup.value.contains(event.target) && + !popupButton.value.contains(event.target) && + !event.target.closest('.bg-purple') + ) { showPopup.value = false; } + if ( + !event.target.closest('.w-48') && + !event.target.closest('.v-app-bar-nav-icon') + ) { + hideSideBar.value = true; + } }; -// Add event listener for clicks outside the popup when component is mounted onMounted(() => { document.addEventListener('click', handleClickOutside); + eventBus.value.toggleSidebar = toggleSidebar; }); -// Remove event listener when component is unmounted onUnmounted(() => { document.removeEventListener('click', handleClickOutside); + eventBus.value.toggleSidebar = null; }); - + + diff --git a/src/eventBus.js b/src/eventBus.js new file mode 100644 index 0000000..024f9c3 --- /dev/null +++ b/src/eventBus.js @@ -0,0 +1,3 @@ +import { ref } from 'vue'; + +export const eventBus = ref({}); \ No newline at end of file diff --git a/src/views/main/Header.vue b/src/views/main/Header.vue index c0755ff..2952349 100644 --- a/src/views/main/Header.vue +++ b/src/views/main/Header.vue @@ -1,129 +1,74 @@  - \ No newline at end of file +import SiteMenu from "@/views/main/SiteMenu.vue"; + diff --git a/src/views/main/SiteMenu.vue b/src/views/main/SiteMenu.vue index 0944c5d..924bf1f 100644 --- a/src/views/main/SiteMenu.vue +++ b/src/views/main/SiteMenu.vue @@ -1,81 +1,50 @@  \ No newline at end of file +.extra-small-text { + font-size: 0.6rem; /* Ajustez cette valeur selon vos besoins */ +} + + \ No newline at end of file diff --git a/src/views/manualusers/ARPS.vue b/src/views/manualusers/ARPS.vue index d78ba99..c9034cf 100644 --- a/src/views/manualusers/ARPS.vue +++ b/src/views/manualusers/ARPS.vue @@ -1,9 +1,9 @@ \ No newline at end of file + +.v-btn--active { + background-color: #1976D2; + color: white; +} +