Skip to content

fix(mobile): accept decimal comma in amounts + compact recurring segmented - #30

Merged
Periicles merged 2 commits into
mainfrom
fix/mobile-amount-and-segmented
Jun 12, 2026
Merged

fix(mobile): accept decimal comma in amounts + compact recurring segmented#30
Periicles merged 2 commits into
mainfrom
fix/mobile-amount-and-segmented

Conversation

@Periicles

Copy link
Copy Markdown
Collaborator

Ce que fait cette PR

Corrige deux problèmes mobile signalés sur le formulaire de dépense récurrente (et au-delà).

1. Saisie de montant avec virgule (app-wide, critique). Le clavier décimal d'un iPhone français produit une virgule. Or amountString et les schémas Zod des formulaires n'acceptaient que le point (/^\d+(\.\d{1,2})?$/), sans normalisation. Résultat : « 12,50 » échouait à la validation, React Hook Form refocalisait le champ → le clavier se rouvrait, rendant la validation impossible. Désormais la virgule est normalisée en point :

  • amountString (server) unifié et partagé par tous les schémas (income, expense, budget, recurring, confirm), avec transform virgule → point ;
  • setValueAs: amountSetValueAs ajouté sur tous les register de montant (dépense, revenu, budget, onboarding, récurrente) → la validation client accepte aussi la virgule.

2. Contrôles segmentés trop volumineux (récurrentes). Les segmentés Type (Fixe/Variable) et Fréquence (Mensuel/Trimestriel/Annuel) s'étiraient sur toute la largeur avec un grand vide gris (ils sont inline-flex dans une colonne flex qui les étirait). Passés en self-start → largeur de contenu, compacts.

Pourquoi

Sans ça, un utilisateur français ne peut pas saisir de montant décimal sur mobile — y compris dans l'ajout rapide de dépense (la fonctionnalité phare). Bug critique avant la démo.

Comment tester

  • npm run test (nouveau test : amountString accepte « 12,50 » et le normalise en « 12.50 »).
  • Sur mobile : saisir un montant avec une virgule dans n'importe quel formulaire → la validation passe et le montant est enregistré correctement.
  • Formulaire de récurrente : les segmentés Type/Fréquence sont compacts.

Checklist

  • Conventions CLAUDE.md respectées
  • Pas de any (helper amountSetValueAs typé)
  • Tests passent (npm run test — 245)
  • Vérifié en émulation mobile (Chromium iPhone) pour le visuel
  • À confirmer sur iPhone réel (clavier FR + Safari) — voir note ci-dessous

Note iOS : type="month" (mois d'ancrage / fin) n'est pas supporté par Safari iOS et s'affiche en champ texte. Hors scope de cette PR ; à traiter séparément si gênant.

@vercel

vercel Bot commented Jun 12, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
koza Ready Ready Preview, Comment Jun 12, 2026 6:24am

@Periicles
Periicles merged commit fd48e5d into main Jun 12, 2026
12 checks passed
@Periicles
Periicles deleted the fix/mobile-amount-and-segmented branch June 12, 2026 06:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant