From f2c06aed43d2da48d9f7065f58a9ae31352420b1 Mon Sep 17 00:00:00 2001 From: tristan Date: Tue, 23 Jun 2026 14:09:36 +0200 Subject: [PATCH] =?UTF-8?q?fix(front)=20:=20masque=20=C3=A9largi=20pour=20?= =?UTF-8?q?l'immatriculation=20=C2=AB=20Tout=20format=20=C2=BB=20(ERP-189)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit « Tout format » n'est plus un champ libre total : masque maska charset (lettres/chiffres/espace/tiret, MAJ, longueur libre) pour les plaques anciennes ou étrangères, filtrant accents/ponctuation/symboles. Format autoritaire côté serveur. --- .../logistique/components/WeighingBlock.vue | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/frontend/modules/logistique/components/WeighingBlock.vue b/frontend/modules/logistique/components/WeighingBlock.vue index 95927f6..890cb95 100644 --- a/frontend/modules/logistique/components/WeighingBlock.vue +++ b/frontend/modules/logistique/components/WeighingBlock.vue @@ -67,12 +67,14 @@ :error="errors.dsd" /> - c.toUpperCase() } }, } +// Masque « Tout format » (RG-5.01) : plaques anciennes / étrangères / engins. On +// autorise lettres, chiffres, espace et tiret, en MAJUSCULES, longueur libre — +// mais on filtre tout le reste (accents, ponctuation, symboles : « &é"'(_ç… »). +// Pattern maska charset du projet (cf. shared/utils/textSanitize) : `preProcess` +// retire d'abord les caractères hors charset (le token `multiple` glouton +// s'arrêterait sinon au 1er invalide), puis le token laisse passer le reste. +const FREE_PLATE_MASK = { + mask: 'P', + tokens: { P: { pattern: /[A-Z0-9 -]/, multiple: true } }, + preProcess: (value: string) => value.toUpperCase().replace(/[^A-Z0-9 -]/g, ''), +} + // Masque « chiffres uniquement » (maska, longueur libre) pour Poids et DSD : // ces champs texte sont verrouillés sur des entiers, et de toute façon désactivés // (remplis par la pesée).