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()