From 7bca8a41945b16433788d25fd65f647e479f4ae2 Mon Sep 17 00:00:00 2001 From: alexm Date: Tue, 21 Jan 2025 13:48:04 +0100 Subject: [PATCH 1/2] fix(VnSection): refs #8197 check route --- src/components/common/VnSection.vue | 32 ++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/components/common/VnSection.vue b/src/components/common/VnSection.vue index 16ea79047..69e25cdfd 100644 --- a/src/components/common/VnSection.vue +++ b/src/components/common/VnSection.vue @@ -2,9 +2,9 @@ import RightMenu from './RightMenu.vue'; import VnSearchbar from 'components/ui/VnSearchbar.vue'; import VnTableFilter from '../VnTable/VnTableFilter.vue'; -import { onBeforeMount, computed, ref } from 'vue'; +import { onBeforeMount, onMounted, onUnmounted, computed, ref } from 'vue'; import { useArrayData } from 'src/composables/useArrayData'; -import { useRoute } from 'vue-router'; +import { useRoute, useRouter } from 'vue-router'; import { useHasContent } from 'src/composables/useHasContent'; const $props = defineProps({ @@ -47,16 +47,12 @@ const $props = defineProps({ }); const route = useRoute(); +const router = useRouter(); + let arrayData; const sectionValue = computed(() => $props.section ?? $props.dataKey); -const isMainSection = computed(() => { - const isSame = sectionValue.value == route.name; - if (!isSame && arrayData) { - arrayData.reset(['userParams', 'filter']); - arrayData.setCurrentFilter(); - } - return isSame; -}); +const isMainSection = ref(); + const searchbarId = 'section-searchbar'; const hasContent = useHasContent(`#${searchbarId}`); @@ -68,7 +64,23 @@ onBeforeMount(() => { ...$props.arrayDataProps, navigate: $props.redirect, }); + checkIsMain(); }); + +onMounted(() => { + const unsubscribe = router.afterEach(() => { + checkIsMain(); + }); + onUnmounted(() => unsubscribe()); +}); + +function checkIsMain() { + isMainSection.value = sectionValue.value == route.name; + if (!isMainSection.value && arrayData) { + arrayData.reset(['userParams', 'filter']); + arrayData.setCurrentFilter(); + } +}