4ce1bafb2f
Masque front 5 chiffres sur la modale manuelle + Assert\LessThanOrEqual(99999) sur WeighbridgeReadingResource (weight/dsd, mode MANUAL) et backstop entité (validateManualEntryDigits). Le DSD auto (compteur de site) n'est pas contraint.
51 lines
2.0 KiB
TypeScript
51 lines
2.0 KiB
TypeScript
import type { MaskInputOptions } from 'maska'
|
|
|
|
/**
|
|
* Masques de saisie du module « Tickets de pesée » (M5). Partagés entre le
|
|
* composant de bloc (`WeighingBlock`) et les modales de pesée (écrans Ajouter /
|
|
* Modifier). La validation de format reste autoritaire côté serveur (RG-5.01).
|
|
*/
|
|
|
|
/**
|
|
* Masque « chiffres uniquement » (longueur libre) — Poids et DSD. Verrouille la
|
|
* saisie sur des entiers.
|
|
*/
|
|
export const NUMERIC_MASK: MaskInputOptions = {
|
|
mask: 'D',
|
|
tokens: { D: { pattern: /[0-9]/, multiple: true } },
|
|
}
|
|
|
|
/**
|
|
* Masque « chiffres, maximum 5 » — SAISIE MANUELLE du poids et du DSD (modale de
|
|
* pesée manuelle). Borne la saisie à 5 chiffres (≤ 99999) ; le garde-fou serveur
|
|
* (Callback mode MANUAL) reste autoritaire. NE PAS utiliser pour l'AFFICHAGE des
|
|
* valeurs (WeighingBlock) : un DSD auto-alloué peut dépasser 5 chiffres.
|
|
*/
|
|
export const MANUAL_NUMERIC_MASK: MaskInputOptions = {
|
|
mask: 'DDDDD',
|
|
tokens: { D: { pattern: /[0-9]/ } },
|
|
}
|
|
|
|
/**
|
|
* Masque plaque FR SIV `XX-000-XX` : 2 lettres, 3 chiffres, 2 lettres, majuscules
|
|
* forcées. Utilisé quand « Tout format » n'est pas coché (RG-5.01).
|
|
*/
|
|
export const PLATE_MASK: MaskInputOptions = {
|
|
mask: 'AA-###-AA',
|
|
tokens: { A: { pattern: /[A-Za-z]/, transform: (c: string) => 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.
|
|
*/
|
|
export const FREE_PLATE_MASK: MaskInputOptions = {
|
|
mask: 'P',
|
|
tokens: { P: { pattern: /[A-Z0-9 -]/, multiple: true } },
|
|
preProcess: (value: string) => value.toUpperCase().replace(/[^A-Z0-9 -]/g, ''),
|
|
}
|