diff --git a/app/pages/product-catalog.vue b/app/pages/product-catalog.vue
index 65b929a..b216fb7 100644
--- a/app/pages/product-catalog.vue
+++ b/app/pages/product-catalog.vue
@@ -91,6 +91,7 @@
+ | Aperçu |
Nom |
Référence |
Type de produit |
@@ -101,6 +102,12 @@
+ |
+
+ |
{{ product.name }} |
{{ product.reference || '—' }} |
{{ product.typeProduct?.name || '—' }} |
@@ -142,6 +149,8 @@ import { computed, onMounted, ref } from 'vue'
import { useHead } from '#imports'
import { useProducts } from '~/composables/useProducts'
import { useToast } from '~/composables/useToast'
+import DocumentThumbnail from '~/components/DocumentThumbnail.vue'
+import { isImageDocument, isPdfDocument } from '~/utils/documentPreview'
useHead(() => ({
title: 'Catalogue des produits',
@@ -230,6 +239,35 @@ const formatConstructeurs = (constructeurs: Array>) =>
.filter((name): name is string => Boolean(name))
.join(', ')
+const resolvePrimaryDocument = (product: Record) => {
+ const documents = Array.isArray(product?.documents) ? product.documents : []
+ if (!documents.length) {
+ return null
+ }
+ const normalized = documents.filter((doc) => doc && typeof doc === 'object')
+ const withPath = normalized.filter((doc) => doc?.path)
+ if (!withPath.length) {
+ return normalized[0] ?? null
+ }
+ const images = withPath.filter((doc) => isImageDocument(doc))
+ if (images.length) {
+ return images[0]
+ }
+ const pdf = withPath.find((doc) => isPdfDocument(doc))
+ if (pdf) {
+ return pdf
+ }
+ return withPath[0]
+}
+
+const resolvePreviewAlt = (product: Record) => {
+ const parts = [product?.name, product?.reference].filter(Boolean)
+ if (parts.length) {
+ return `Aperçu du document de ${parts.join(' – ')}`
+ }
+ return 'Aperçu du document'
+}
+
const reload = async () => {
await loadProducts({ force: true })
}