From ab05ce589dc9be9f36e9332130ff9118b02eb189 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Mon, 16 Mar 2026 15:52:02 +0100 Subject: [PATCH] fix(ui) : show type name and ref in slot selects, stay on page after save MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - PieceSelect, ProductSelect, ComposantSelect: show type name and "Ref." prefix in dropdown descriptions (matching create page format) - Category edit pages (component, piece, product): stay on page after successful save instead of navigating back to list - Component and product edit pages: same — stay on page after save Co-Authored-By: Claude Opus 4.6 (1M context) --- app/components/ComposantSelect.vue | 6 +++++- app/components/PieceSelect.vue | 6 +++++- app/components/ProductSelect.vue | 6 +++++- app/composables/useComponentEdit.ts | 2 +- app/pages/component-category/[id]/edit.vue | 2 -- app/pages/piece-category/[id]/edit.vue | 2 -- app/pages/product-category/[id]/edit.vue | 2 -- app/pages/product/[id]/edit.vue | 1 - 8 files changed, 16 insertions(+), 11 deletions(-) diff --git a/app/components/ComposantSelect.vue b/app/components/ComposantSelect.vue index 4675700..ca8bb15 100644 --- a/app/components/ComposantSelect.vue +++ b/app/components/ComposantSelect.vue @@ -98,8 +98,12 @@ const updateValue = (value: string | number | null | undefined) => { const formatDescription = (option: any) => { const parts: string[] = [] + const typeName = option?.typeComposant?.name + if (typeName) { + parts.push(typeName) + } if (option?.reference) { - parts.push(option.reference) + parts.push(`Ref. ${option.reference}`) } if (option?.prix !== undefined && option.prix !== null) { const price = Number(option.prix) diff --git a/app/components/PieceSelect.vue b/app/components/PieceSelect.vue index d734247..752848d 100644 --- a/app/components/PieceSelect.vue +++ b/app/components/PieceSelect.vue @@ -98,8 +98,12 @@ const updateValue = (value: string | number | null | undefined) => { const formatDescription = (option: any) => { const parts: string[] = [] + const typeName = option?.typePiece?.name + if (typeName) { + parts.push(typeName) + } if (option?.reference) { - parts.push(option.reference) + parts.push(`Ref. ${option.reference}`) } if (option?.prix !== undefined && option.prix !== null) { const price = Number(option.prix) diff --git a/app/components/ProductSelect.vue b/app/components/ProductSelect.vue index 68c9a9e..c6d3fd1 100644 --- a/app/components/ProductSelect.vue +++ b/app/components/ProductSelect.vue @@ -98,8 +98,12 @@ const updateValue = (value: string | number | null | undefined) => { const formatDescription = (option: any) => { const parts: string[] = [] + const typeName = option?.typeProduct?.name + if (typeName) { + parts.push(typeName) + } if (option?.reference) { - parts.push(option.reference) + parts.push(`Ref. ${option.reference}`) } if (option?.supplierPrice !== undefined && option.supplierPrice !== null) { const price = Number(option.supplierPrice) diff --git a/app/composables/useComponentEdit.ts b/app/composables/useComponentEdit.ts index 26371d1..6beed60 100644 --- a/app/composables/useComponentEdit.ts +++ b/app/composables/useComponentEdit.ts @@ -403,7 +403,7 @@ export function useComponentEdit(componentId: string) { ], { customFieldInputs, upsertCustomFieldValue, updateCustomFieldValue, toast }, ) - await router.push('/component-catalog') + toast.showSuccess('Composant mis à jour avec succès.') } } catch (error: any) { diff --git a/app/pages/component-category/[id]/edit.vue b/app/pages/component-category/[id]/edit.vue index 8665930..d9a7f2d 100644 --- a/app/pages/component-category/[id]/edit.vue +++ b/app/pages/component-category/[id]/edit.vue @@ -158,7 +158,6 @@ const handleSubmit = async (payload: Parameters[1]) => { await syncExecute(id, { confirmDeletions: false, confirmTypeChanges: false }) await loadComponentTypes({ force: true }) showSuccess('Catégorie de composant mise à jour avec succès.') - await navigateBackToList() } } catch (error) { showError(normalizeError(error)) @@ -183,7 +182,6 @@ const handleSyncConfirm = async () => { }) await loadComponentTypes({ force: true }) showSuccess('Catégorie de composant mise à jour avec succès.') - await navigateBackToList() } catch (error) { showError(normalizeError(error)) } finally { diff --git a/app/pages/piece-category/[id]/edit.vue b/app/pages/piece-category/[id]/edit.vue index 9781dde..6a0bce9 100644 --- a/app/pages/piece-category/[id]/edit.vue +++ b/app/pages/piece-category/[id]/edit.vue @@ -156,7 +156,6 @@ const handleSubmit = async (payload: Parameters[1]) => { await syncExecute(id, { confirmDeletions: false, confirmTypeChanges: false }) await loadPieceTypes({ force: true }) showSuccess('Catégorie de pièce mise à jour avec succès.') - await navigateBackToList() } } catch (error) { showError(normalizeError(error)) @@ -181,7 +180,6 @@ const handleSyncConfirm = async () => { }) await loadPieceTypes({ force: true }) showSuccess('Catégorie de pièce mise à jour avec succès.') - await navigateBackToList() } catch (error) { showError(normalizeError(error)) } finally { diff --git a/app/pages/product-category/[id]/edit.vue b/app/pages/product-category/[id]/edit.vue index f687fb5..71652d2 100644 --- a/app/pages/product-category/[id]/edit.vue +++ b/app/pages/product-category/[id]/edit.vue @@ -156,7 +156,6 @@ const handleSubmit = async (payload: Parameters[1]) => { await syncExecute(id, { confirmDeletions: false, confirmTypeChanges: false }) await loadProductTypes({ force: true }) showSuccess('Catégorie de produit mise à jour avec succès.') - await navigateBackToList() } } catch (error) { showError(normalizeError(error)) @@ -181,7 +180,6 @@ const handleSyncConfirm = async () => { }) await loadProductTypes({ force: true }) showSuccess('Catégorie de produit mise à jour avec succès.') - await navigateBackToList() } catch (error) { showError(normalizeError(error)) } finally { diff --git a/app/pages/product/[id]/edit.vue b/app/pages/product/[id]/edit.vue index dbd83e3..90b295f 100644 --- a/app/pages/product/[id]/edit.vue +++ b/app/pages/product/[id]/edit.vue @@ -482,7 +482,6 @@ const submitEdition = async () => { return } toast.showSuccess('Produit mis à jour avec succès') - await router.push('/product-catalog') } } catch (error: any) { toast.showError(humanizeError(error?.message) || 'Impossible de mettre à jour le produit')