+ Certains champs personnalisés sont obligatoires. Veuillez les renseigner avant de valider. +
+ Merci de renseigner tous les champs personnalisés obligatoires. +
@@ -460,6 +466,7 @@ const { constructeurLinks, productSelections, customFieldInputs, + requiredCustomFieldsFilled, pieceTypeList, selectedType, resolvedStructure, @@ -481,6 +488,8 @@ const { formatPieceStructurePreview, } = usePieceEdit(String(route.params.id)) +const hasRequiredCustomFields = computed(() => customFieldInputs.value.some(f => f.required)) + const entityTabs = computed(() => [ { key: 'general', label: 'Général' }, { key: 'products', label: 'Produits liés', count: structureProducts.value.length }, diff --git a/frontend/app/pages/pieces/create.vue b/frontend/app/pages/pieces/create.vue index c0780f8..5b55f5a 100644 --- a/frontend/app/pages/pieces/create.vue +++ b/frontend/app/pages/pieces/create.vue @@ -168,7 +168,7 @@ :model-value="productSelections[entry.index] || null" :disabled="!canEdit || submitting || !selectedType" :type-product-id="entry.typeProductId" - helper-text="Un produit est requis pour cette pièce." + helper-text="Sélectionnez un produit (optionnel)." @update:model-value="(value) => setProductSelection(entry.index, value)" /> @@ -273,7 +273,6 @@ import { buildProductRequirementDescriptions, buildProductRequirementEntries, resizeProductSelections, - areProductSelectionsFilled, applyProductSelection, collectNormalizedProductIds, } from '~/shared/utils/pieceProductSelectionUtils' @@ -379,13 +378,7 @@ const productRequirementEntries = computed(() => buildProductRequirementEntries(structureProducts.value, 'piece-create-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) @@ -444,11 +437,6 @@ const submitCreation = async () => { return } - if (!productSelectionsFilled.value) { - toast.showError('Sélectionnez un produit conforme au squelette.') - return - } - const payload: Record