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') }}
-