From 9fc88df3fffa4c0b3938bf9be76e6783e4b240f2 Mon Sep 17 00:00:00 2001 From: r-dev Date: Mon, 6 Apr 2026 17:18:05 +0200 Subject: [PATCH] =?UTF-8?q?fix(piece)=20:=20rendre=20les=20slots=20produit?= =?UTF-8?q?=20optionnels=20en=20cr=C3=A9ation=20et=20=C3=A9dition?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Les sélections de produits liés ne bloquent plus la soumission du formulaire de création ou d'édition de pièce. Les slots vides restent visibles et peuvent être remplis ultérieurement. Co-Authored-By: Claude Opus 4.6 (1M context) --- frontend/app/composables/usePieceEdit.ts | 14 +------------- frontend/app/pages/piece/[id].vue | 11 ++++++++++- frontend/app/pages/pieces/create.vue | 16 ++-------------- 3 files changed, 13 insertions(+), 28 deletions(-) diff --git a/frontend/app/composables/usePieceEdit.ts b/frontend/app/composables/usePieceEdit.ts index 5b49d1c..98abb90 100644 --- a/frontend/app/composables/usePieceEdit.ts +++ b/frontend/app/composables/usePieceEdit.ts @@ -20,7 +20,6 @@ import { buildProductRequirementDescriptions, buildProductRequirementEntries, resizeProductSelections, - areProductSelectionsFilled, applyProductSelection, collectNormalizedProductIds, } from '~/shared/utils/pieceProductSelectionUtils' @@ -199,13 +198,7 @@ export function usePieceEdit(pieceId: string) { buildProductRequirementEntries(structureProducts.value, 'piece-product-requirement'), ) - const productSelectionsFilled = computed(() => - areProductSelectionsFilled( - requiresProductSelection.value, - productRequirementEntries.value, - productSelections.value, - ), - ) + const productSelectionsFilled = computed(() => true) const setProductSelection = (index: number, value: string | null) => { productSelections.value = applyProductSelection(productSelections.value, index, value) @@ -355,11 +348,6 @@ export function usePieceEdit(pieceId: string) { return } - if (!productSelectionsFilled.value) { - toast.showError('Sélectionnez un produit conforme au squelette.') - return - } - const rawPrice = typeof editionForm.prix === 'string' ? editionForm.prix.trim() : editionForm.prix === null || editionForm.prix === undefined diff --git a/frontend/app/pages/piece/[id].vue b/frontend/app/pages/piece/[id].vue index 92cc394..8f1afc8 100644 --- a/frontend/app/pages/piece/[id].vue +++ b/frontend/app/pages/piece/[id].vue @@ -261,7 +261,7 @@ :model-value="productSelections[entry.index] || null" :disabled="!canEdit || saving" :type-product-id="entry.typeProductId" - helper-text="Un produit valide est requis pour cette pièce." + helper-text="Sélectionnez un produit (optionnel)." @update:model-value="(value) => setProductSelection(entry.index, value)" /> @@ -359,6 +359,9 @@