diff --git a/app/components/layout/ListMapLayout.vue b/app/components/layout/ListMapLayout.vue
deleted file mode 100644
index 446ecd9..0000000
--- a/app/components/layout/ListMapLayout.vue
+++ /dev/null
@@ -1,151 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/components/page/CatalogPage.vue b/app/components/page/CatalogPage.vue
index 7a80206..0e0e54e 100644
--- a/app/components/page/CatalogPage.vue
+++ b/app/components/page/CatalogPage.vue
@@ -19,6 +19,7 @@
+
@@ -27,6 +28,8 @@
:key="item.uuid"
:class="{ 'ring-2 ring-primary rounded-lg': item.uuid === selectedId }"
@click="onItemClick(item)"
+ @mouseenter="emit('update:hoveredId', item.uuid)"
+ @mouseleave="emit('update:hoveredId', undefined)"
>
@@ -42,17 +45,19 @@
-
-
@@ -60,6 +65,7 @@
+
@@ -68,6 +74,8 @@
:key="item.uuid"
:class="{ 'ring-2 ring-primary rounded-lg': item.uuid === selectedId }"
@click="onItemClick(item)"
+ @mouseenter="emit('update:hoveredId', item.uuid)"
+ @mouseleave="emit('update:hoveredId', undefined)"
>
@@ -120,6 +128,7 @@
+
@@ -162,6 +171,7 @@ const props = withDefaults(defineProps<{
mapId?: string
pointColor?: string
selectedId?: string
+ hoveredId?: string
}>(), {
loading: false,
withMap: true,
@@ -172,6 +182,7 @@ const props = withDefaults(defineProps<{
const emit = defineEmits<{
'select': [item: MapItem]
'update:selectedId': [uuid: string]
+ 'update:hoveredId': [uuid: string | undefined]
}>()
// Filter items with valid coordinates for map
@@ -229,6 +240,17 @@ watch(() => props.selectedId, (uuid) => {
}
})
+// Watch hoveredId and fly to it
+watch(() => props.hoveredId, (uuid) => {
+ if (uuid && props.withMap) {
+ const item = itemsWithCoords.value.find(i => i.uuid === uuid)
+ if (item) {
+ mapRef.value?.flyTo(item.latitude, item.longitude, 8)
+ mobileMapRef.value?.flyTo(item.latitude, item.longitude, 8)
+ }
+ }
+})
+
// Expose flyTo for external use
const flyTo = (lat: number, lng: number, zoom = 8) => {
mapRef.value?.flyTo(lat, lng, zoom)
diff --git a/app/pages/catalog/hubs/index.vue b/app/pages/catalog/hubs/index.vue
index 482ce2b..3cb579a 100644
--- a/app/pages/catalog/hubs/index.vue
+++ b/app/pages/catalog/hubs/index.vue
@@ -5,6 +5,7 @@
map-id="hubs-map"
point-color="#10b981"
:selected-id="selectedHubId"
+ v-model:hovered-id="hoveredHubId"
@select="onSelectHub"
>
@@ -59,8 +60,9 @@ const {
init
} = useCatalogHubs()
-// Selected hub for map highlighting
+// Selected/hovered hub for map highlighting
const selectedHubId = ref()
+const hoveredHubId = ref()
const onSelectHub = (hub: any) => {
selectedHubId.value = hub.uuid
diff --git a/app/pages/catalog/offers/index.vue b/app/pages/catalog/offers/index.vue
index f54876e..c3cd012 100644
--- a/app/pages/catalog/offers/index.vue
+++ b/app/pages/catalog/offers/index.vue
@@ -5,6 +5,7 @@
map-id="offers-map"
point-color="#f59e0b"
:selected-id="selectedOfferId"
+ v-model:hovered-id="hoveredOfferId"
@select="onSelectOffer"
>
@@ -78,8 +79,9 @@ const onProductFilterChange = (value: string) => {
setProductUuid(value === 'all' ? null : value)
}
-// Selected offer for map highlighting
+// Selected/hovered offer for map highlighting
const selectedOfferId = ref()
+const hoveredOfferId = ref()
const onSelectOffer = (offer: any) => {
selectedOfferId.value = offer.uuid
diff --git a/app/pages/catalog/suppliers/index.vue b/app/pages/catalog/suppliers/index.vue
index 1d3d742..b31abf4 100644
--- a/app/pages/catalog/suppliers/index.vue
+++ b/app/pages/catalog/suppliers/index.vue
@@ -5,6 +5,7 @@
map-id="suppliers-map"
point-color="#3b82f6"
:selected-id="selectedSupplierId"
+ v-model:hovered-id="hoveredSupplierId"
@select="onSelectSupplier"
>
@@ -44,8 +45,9 @@ const {
init
} = useCatalogSuppliers()
-// Selected supplier for map highlighting
+// Selected/hovered supplier for map highlighting
const selectedSupplierId = ref()
+const hoveredSupplierId = ref()
const onSelectSupplier = (supplier: any) => {
selectedSupplierId.value = supplier.uuid || supplier.teamUuid
diff --git a/app/pages/clientarea/addresses/index.vue b/app/pages/clientarea/addresses/index.vue
index 9759644..f29c41b 100644
--- a/app/pages/clientarea/addresses/index.vue
+++ b/app/pages/clientarea/addresses/index.vue
@@ -1,71 +1,40 @@
-
-
-
-
-
-
- {{ t('profileAddresses.states.loading') }}
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
{{ item.name }}
+
{{ item.address }}
+
+ {{ isoToEmoji(item.countryCode) }}
+
+
+
+
+
-
-
-
-
-
-
{{ addr.name }}
-
{{ addr.address }}
-
- {{ isoToEmoji(addr.countryCode) }}
-
-
-
-
-
-
-
- {{ t('profileAddresses.empty.title') }}
-
-
-
-
-
-
-
+
-
-
+
+