diff --git a/app/pages/product-catalog.vue b/app/pages/product-catalog.vue index 8cd50b6..92c7f58 100644 --- a/app/pages/product-catalog.vue +++ b/app/pages/product-catalog.vue @@ -296,14 +296,30 @@ const reload = () => fetchProducts() const { confirm } = useConfirm() +const resolveDeleteImpact = (product: Record) => { + const impacts: string[] = [] + const machineLinks = Array.isArray(product?.machineLinks) ? product.machineLinks.length : product?.machineLinksCount ?? 0 + const documents = Array.isArray(product?.documents) ? product.documents.length : product?.documentsCount ?? 0 + const customFields = Array.isArray(product?.customFieldValues) ? product.customFieldValues.length : product?.customFieldValuesCount ?? 0 + if (machineLinks > 0) impacts.push(`${machineLinks} liaison${machineLinks > 1 ? 's' : ''} machine`) + if (documents > 0) impacts.push(`${documents} document${documents > 1 ? 's' : ''}`) + if (customFields > 0) impacts.push(`${customFields} valeur${customFields > 1 ? 's' : ''} de champs personnalisés`) + return impacts +} + const confirmDelete = async (product: Record) => { - const confirmed = await confirm({ - message: `Voulez-vous vraiment supprimer le produit "${product.name}" ?\n\nCette action est irréversible.`, - }) + const productName = product?.name || 'ce produit' + const impacts = resolveDeleteImpact(product) + const lines = [`Voulez-vous vraiment supprimer « ${productName} » ?`] + if (impacts.length) { + lines.push(`Cela supprimera également :\n• ${impacts.join('\n• ')}`) + } + lines.push('Cette action est irréversible.') + const confirmed = await confirm({ title: 'Supprimer le produit', message: lines.join('\n\n'), dangerous: true }) if (!confirmed) return const result = await deleteProduct(product.id) if (result.success) { - toast.showSuccess(`Produit "${product.name}" supprimé`) + toast.showSuccess(`Produit "${productName}" supprimé`) } }