diff --git a/frontend/i18n/locales/fr.json b/frontend/i18n/locales/fr.json index ff0c395..1786c32 100644 --- a/frontend/i18n/locales/fr.json +++ b/frontend/i18n/locales/fr.json @@ -558,7 +558,6 @@ }, "qualimat": { "empty": "Aucun transporteur QUALIMAT trouvé.", - "continue": "Continuer", "columns": { "name": "Nom", "address": "Adresse", diff --git a/frontend/modules/transport/composables/__tests__/useCarrierForm.test.ts b/frontend/modules/transport/composables/__tests__/useCarrierForm.test.ts index 3f28fbd..1a0d32a 100644 --- a/frontend/modules/transport/composables/__tests__/useCarrierForm.test.ts +++ b/frontend/modules/transport/composables/__tests__/useCarrierForm.test.ts @@ -162,8 +162,10 @@ describe('useCarrierForm', () => { // RG-4.13 : réaffiche le nom normalisé (UPPERCASE) renvoyé par le serveur. expect(form.main.name).toBe('TRANSPORTS ACME') expect(form.mainLocked.value).toBe(true) - expect(form.activeTab.value).toBe('qualimat') - expect(form.unlockedIndex.value).toBe(0) + // L'onglet Qualimat était déjà accessible (saisie assistée) ; le POST + // déverrouille Adresses (index 1) et bascule dessus. + expect(form.activeTab.value).toBe('addresses') + expect(form.unlockedIndex.value).toBe(1) }) it('buildMainPayload : omet certificationType vide, garde isChartered', () => { @@ -213,8 +215,9 @@ describe('useCarrierForm', () => { expect(CARRIER_TAB_KEYS).toEqual(['qualimat', 'addresses', 'contacts', 'prices']) const form = useCarrierForm() expect(form.tabKeys.value).toEqual(['qualimat', 'addresses', 'contacts', 'prices']) - // Tous verrouillés tant que le formulaire principal n'est pas validé. - expect(form.unlockedIndex.value).toBe(-1) + // L'onglet Qualimat (index 0) est accessible dès le départ (saisie assistée) ; + // Adresses / Contacts / Prix restent verrouillés jusqu'au POST principal. + expect(form.unlockedIndex.value).toBe(0) }) it('completeTab : déverrouille/avance, et signale le dernier onglet du flux', () => { diff --git a/frontend/modules/transport/composables/useCarrierForm.ts b/frontend/modules/transport/composables/useCarrierForm.ts index 31abd25..a35bc3c 100644 --- a/frontend/modules/transport/composables/useCarrierForm.ts +++ b/frontend/modules/transport/composables/useCarrierForm.ts @@ -76,8 +76,10 @@ export function useCarrierForm() { // ── Onglets : ordre + gating progressif ─────────────────────────────────── const tabKeys = ref([...CARRIER_TAB_KEYS]) - // Index du dernier onglet déverrouillé (-1 tant que le transporteur n'est pas créé). - const unlockedIndex = ref(-1) + // Index du dernier onglet déverrouillé. L'onglet Qualimat (index 0) est la saisie + // assistée du formulaire principal : accessible DÈS LE DÉPART (≠ Adresses / + // Contacts / Prix, déverrouillés seulement après le POST principal). + const unlockedIndex = ref(0) const activeTab = ref(CARRIER_TAB_KEYS[0]) // Onglets validés (passent en lecture seule). const validated = reactive>({}) @@ -194,9 +196,10 @@ export function useCarrierForm() { } /** - * POST /carriers (groupe `carrier:write:main`). Pré-check front (nom), puis - * création. Au succès : verrouille le bloc principal, déverrouille le 1er onglet - * et bascule sur « Qualimat ». Retourne true si créé, false sinon. + * POST /carriers (groupe `carrier:write:main`). Pré-check front, puis création. + * Au succès : verrouille le bloc principal, déverrouille l'onglet Adresses et + * bascule dessus (l'onglet Qualimat, saisie assistée, était déjà accessible). + * Retourne true si créé, false sinon. */ async function submitMain(): Promise { if (mainSubmitting.value) return false @@ -217,8 +220,9 @@ export function useCarrierForm() { main.certificationType = created.certificationType ?? main.certificationType mainLocked.value = true - unlockedIndex.value = 0 - activeTab.value = tabKeys.value[0] ?? CARRIER_TAB_KEYS[0] + // Déverrouille l'onglet suivant (Adresses, index 1) et bascule dessus. + unlockedIndex.value = Math.max(unlockedIndex.value, 1) + activeTab.value = tabKeys.value[1] ?? CARRIER_TAB_KEYS[1] toast.success({ title: t('transport.carriers.toast.createSuccess') }) return true } diff --git a/frontend/modules/transport/pages/carriers/new.vue b/frontend/modules/transport/pages/carriers/new.vue index 4733037..1d60638 100644 --- a/frontend/modules/transport/pages/carriers/new.vue +++ b/frontend/modules/transport/pages/carriers/new.vue @@ -167,15 +167,6 @@ - -
- -
@@ -216,7 +207,8 @@