diff --git a/app/components/catalog/InfoPanel.vue b/app/components/catalog/InfoPanel.vue
index 0cef088..42c12e0 100644
--- a/app/components/catalog/InfoPanel.vue
+++ b/app/components/catalog/InfoPanel.vue
@@ -122,6 +122,13 @@
selectable
@select="onProductSelect(product)"
/>
+
@@ -189,6 +196,13 @@
selectable
@select="onSupplierSelect(supplier)"
/>
+
@@ -227,6 +241,13 @@
selectable
@select="onHubSelect(hub)"
/>
+
@@ -252,6 +273,13 @@
selectable
@select="onHubSelect(hub)"
/>
+
@@ -298,6 +326,7 @@ const emit = defineEmits<{
'select-offer': [offer: { uuid: string; productUuid?: string | null }]
'update:current-tab': [tab: string]
'open-kyc': [uuid: string | undefined]
+ 'pin': [type: 'product' | 'hub' | 'supplier', item: { uuid?: string | null; name?: string | null }]
}>()
const { t } = useI18n()
diff --git a/app/components/catalog/SelectionPanel.vue b/app/components/catalog/SelectionPanel.vue
index 4dd6a28..eb855dd 100644
--- a/app/components/catalog/SelectionPanel.vue
+++ b/app/components/catalog/SelectionPanel.vue
@@ -37,6 +37,13 @@
compact
@select="onSelect(item)"
/>
+
@@ -54,6 +61,13 @@
selectable
@select="onSelect(item)"
/>
+
@@ -71,6 +85,13 @@
selectable
@select="onSelect(item)"
/>
+
@@ -111,6 +132,7 @@ const emit = defineEmits<{
'close': []
'load-more': []
'hover': [uuid: string | null]
+ 'pin': [type: 'product' | 'hub' | 'supplier', item: Item]
}>()
const { t } = useI18n()
diff --git a/app/pages/catalog/index.vue b/app/pages/catalog/index.vue
index 98573b0..b728549 100644
--- a/app/pages/catalog/index.vue
+++ b/app/pages/catalog/index.vue
@@ -40,6 +40,7 @@
:loading-more="selectionLoadingMore"
:has-more="selectionHasMore && !filterByBounds"
@select="onSelectItem"
+ @pin="onPinItem"
@close="onClosePanel"
@load-more="onLoadMore"
@hover="onHoverItem"
@@ -66,6 +67,7 @@
@select-product="onInfoSelectProduct"
@select-offer="onSelectOffer"
@open-kyc="onOpenKyc"
+ @pin="onPinItem"
/>
@@ -585,6 +587,12 @@ const onSelectItem = (type: string, item: { uuid?: string | null; name?: string
}
}
+const onPinItem = (type: 'product' | 'hub' | 'supplier', item: { uuid?: string | null; name?: string | null }) => {
+ if (!item.uuid) return
+ const label = item.name || item.uuid.slice(0, 8) + '...'
+ selectItem(type, item.uuid, label)
+}
+
// Close panel (cancel select mode)
const onClosePanel = () => {
cancelSelect()