From 481a38b3a1dc664198cad939e02cec5b13d775f3 Mon Sep 17 00:00:00 2001 From: Ruslan Bakiev <572431+veikab@users.noreply.github.com> Date: Sat, 7 Feb 2026 12:14:00 +0700 Subject: [PATCH] Keep select param on navigation and toggles --- app/components/MapSidebar.vue | 2 +- app/composables/useCatalogSearch.ts | 26 +++++++++++++------------- app/layouts/topnav.vue | 2 +- app/pages/catalog/products/[id].vue | 2 +- app/pages/search/index.vue | 2 +- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/app/components/MapSidebar.vue b/app/components/MapSidebar.vue index f5a1598..55d7834 100644 --- a/app/components/MapSidebar.vue +++ b/app/components/MapSidebar.vue @@ -3,7 +3,7 @@
diff --git a/app/composables/useCatalogSearch.ts b/app/composables/useCatalogSearch.ts index 53c2579..c11f696 100644 --- a/app/composables/useCatalogSearch.ts +++ b/app/composables/useCatalogSearch.ts @@ -308,17 +308,13 @@ export function useCatalogSearch() { }) const lastViewMode = useState('catalog-last-view-mode', () => 'offers') const setMapViewMode = (mode: MapViewMode) => { - if (selectMode.value) { - const newSelectMode: SelectMode = mode === 'hubs' ? 'hub' - : mode === 'suppliers' ? 'supplier' - : 'product' - updateQuery({ - view: mode === 'offers' ? null : mode, - select: newSelectMode - }) - return - } - updateQuery({ view: mode === 'offers' ? null : mode }) + const newSelectMode: SelectMode = mode === 'hubs' ? 'hub' + : mode === 'suppliers' ? 'supplier' + : 'product' + updateQuery({ + view: mode === 'offers' ? null : mode, + select: newSelectMode + }) } // Drawer state for list view @@ -368,10 +364,14 @@ export function useCatalogSearch() { }) const setCatalogMode = (newMode: CatalogMode) => { + const defaultSelect: SelectMode = selectMode.value + || (mapViewMode.value === 'hubs' ? 'hub' + : mapViewMode.value === 'suppliers' ? 'supplier' + : 'product') if (newMode === 'explore') { - updateQuery({ mode: newMode, qty: null }) + updateQuery({ mode: newMode, qty: null, select: defaultSelect }) } else { - updateQuery({ mode: newMode }) + updateQuery({ mode: newMode, select: defaultSelect }) } } diff --git a/app/layouts/topnav.vue b/app/layouts/topnav.vue index d4ed51b..2474009 100644 --- a/app/layouts/topnav.vue +++ b/app/layouts/topnav.vue @@ -333,7 +333,7 @@ const searchTrigger = useState('catalog-search-trigger', () => 0) const onSearch = () => { // Navigate to catalog page if not there if (!route.path.includes('/catalog')) { - router.push({ path: localePath('/catalog'), query: { ...route.query, mode: 'quote' } }) + router.push({ path: localePath('/catalog'), query: { ...route.query, mode: 'quote', select: 'product' } }) } // Trigger search by incrementing the counter (page watches this) searchTrigger.value++ diff --git a/app/pages/catalog/products/[id].vue b/app/pages/catalog/products/[id].vue index e23af82..9eaa9ca 100644 --- a/app/pages/catalog/products/[id].vue +++ b/app/pages/catalog/products/[id].vue @@ -17,7 +17,7 @@ {{ t('catalogProduct.not_found.title') }} {{ t('catalogProduct.not_found.subtitle') }} - diff --git a/app/pages/search/index.vue b/app/pages/search/index.vue index 77a0e82..c5a6c0f 100644 --- a/app/pages/search/index.vue +++ b/app/pages/search/index.vue @@ -11,7 +11,7 @@ -