Files
Starseed/frontend/shared/utils/phone.ts
T
tristan 9ca9cb1d42
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m47s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m15s
feat(front) : page répertoire clients + datatable
- Page /clients (route à plat) : MalioDataTable 6 colonnes (contact, téléphone
  formaté, codes catégories, badges sites), toggle « Voir les archivés » (état
  local), boutons Ajouter (manage) / Exporter (view, download xlsx), clic ligne
  vers le détail, empty state.
- Composable useClientsRepository (wrapper de usePaginatedList) + util
  formatPhoneFR + clé i18n showArchived.
- Contrat back : la liste client:read expose désormais les codes catégories
  (category:read) et les sites agrégés des adresses (site:read + Client::getSites) ;
  jointures anti N+1 dans createListQueryBuilder. Tests back + front.
2026-06-02 11:17:22 +02:00

24 lines
1.0 KiB
TypeScript

/**
* Formatage d'un numero de telephone francais en groupes de 2 chiffres
* (`XX XX XX XX XX`).
*
* Signature cible partagee avec le ticket 1.13 / ERP-66 : si ce dernier livre
* une version plus riche (validation, indicatif international), elle remplacera
* cette implementation minimale. En attendant, on couvre le besoin du Repertoire
* clients (ERP-62) : afficher un telephone lisible a partir de la valeur stockee
* en base (deja normalisee en 10 chiffres par le ClientProcessor, RG-1.20).
*
* - Ne garde que les chiffres puis groupe par 2 (tolere une saisie deja espacee
* ou pointee, ex: `06.12.34.56.78` ou `0612345678`).
* - Retourne une chaine vide si la valeur est vide/nulle (cellule vide propre).
*/
export function formatPhoneFR(value: string | null | undefined): string {
const digits = (value ?? '').replace(/\D/g, '')
if (digits.length === 0) {
return ''
}
// Groupe par paquets de 2 ; un dernier groupe impair reste tel quel.
return digits.match(/.{1,2}/g)?.join(' ') ?? digits
}