fix(ui): apply WebKitGTK date picker workaround to remaining 7 inputs #188

Closed
opened 2026-05-02 19:56:20 +00:00 by maximus · 0 comments
Owner

Contexte

Suivi de #177 (workaround blur() applique a <input type="date"> de /balance/snapshot).

L'investigation confirme que le bug WebKitGTK (popup natif du date picker qui ne se ferme pas apres selection) impacte tous les <input type="date"> du codebase. Pour eviter de multiplier les issues sur le meme bug, ce ticket regroupe l'application du meme workaround aux 7 autres champs.

Champs a corriger

Fichier Lignes (verifie 2026-05-03)
src/components/transactions/TransactionFilterBar.tsx 168, 178
src/components/adjustments/AdjustmentForm.tsx 72
src/components/balance/LinkTransfersModal.tsx 230, 241
src/components/dashboard/PeriodSelector.tsx 95, 106

Total : 7 champs dans 4 fichiers.

Verification post-/analyze (2026-05-03)

  • Tous les fichiers existent, lignes exactes (aucun decalage depuis la creation de l'issue).
  • Aucun des 7 champs n'a deja le workaround applique.
  • Modele de reference : src/pages/SnapshotEditPage.tsx:145-162 (fix #177 merge dans PR #189) — handler onChange se termine par e.currentTarget.blur() + commentaire explicatif (no-op WebView2/WKWebView).
  • Aucun <input type="date"> supplementaire non liste — total 8 inputs (7 a fixer + 1 deja fixe).
  • Aucun test vitest ne touche les 4 fichiers concernes (smoke manuel suffit, pas de regression a craindre).

Fix a appliquer

Identique a #177 : ajouter e.currentTarget.blur() a la fin du handler onChange. No-op sur WebView2 / WKWebView, ferme le popup sur WebKitGTK.

Modele exact (depuis SnapshotEditPage.tsx) :

onChange={(e) => {
  const next = e.target.value;
  // ... state update ...
  // WebKitGTK (Linux Tauri WebView) does not always dismiss the
  // native date popup after a value commit — user has to hit Esc.
  // Force-blur is a no-op on WebView2/WKWebView. See #177.
  e.currentTarget.blur();
}}

Plan de commits

Une seule PR avec un commit unique : fix(ui): apply WebKitGTK date picker workaround to remaining 7 inputs (#188).

Criteres d'acceptation

  • Workaround applique aux 7 champs listes (4 fichiers)
  • Commentaire inline a chaque endroit (court, reference #177)
  • CHANGELOG (FR + EN) sous Fixed / Corrige
  • Smoke test manuel Linux (Tauri dev) sur au moins 2 des 4 fichiers
  • npm test + npm run build verts (pas de regression visible attendue)

Complexite

Triviale (mecanique sur 4 fichiers, 7 insertions identiques).

Priorite

P3 - cosmetique UX, contournable via Esc.

## Contexte Suivi de #177 (workaround `blur()` applique a `<input type="date">` de `/balance/snapshot`). L'investigation confirme que le bug WebKitGTK (popup natif du date picker qui ne se ferme pas apres selection) impacte tous les `<input type="date">` du codebase. Pour eviter de multiplier les issues sur le meme bug, ce ticket regroupe l'application du meme workaround aux 7 autres champs. ## Champs a corriger | Fichier | Lignes (verifie 2026-05-03) | |---|---| | `src/components/transactions/TransactionFilterBar.tsx` | 168, 178 | | `src/components/adjustments/AdjustmentForm.tsx` | 72 | | `src/components/balance/LinkTransfersModal.tsx` | 230, 241 | | `src/components/dashboard/PeriodSelector.tsx` | 95, 106 | Total : **7 champs** dans 4 fichiers. ## Verification post-/analyze (2026-05-03) - Tous les fichiers existent, lignes exactes (aucun decalage depuis la creation de l'issue). - Aucun des 7 champs n'a deja le workaround applique. - Modele de reference : `src/pages/SnapshotEditPage.tsx:145-162` (fix #177 merge dans PR #189) — handler `onChange` se termine par `e.currentTarget.blur()` + commentaire explicatif (no-op WebView2/WKWebView). - Aucun `<input type="date">` supplementaire non liste — total 8 inputs (7 a fixer + 1 deja fixe). - Aucun test vitest ne touche les 4 fichiers concernes (smoke manuel suffit, pas de regression a craindre). ## Fix a appliquer Identique a #177 : ajouter `e.currentTarget.blur()` a la fin du handler `onChange`. No-op sur WebView2 / WKWebView, ferme le popup sur WebKitGTK. Modele exact (depuis `SnapshotEditPage.tsx`) : ```tsx onChange={(e) => { const next = e.target.value; // ... state update ... // WebKitGTK (Linux Tauri WebView) does not always dismiss the // native date popup after a value commit — user has to hit Esc. // Force-blur is a no-op on WebView2/WKWebView. See #177. e.currentTarget.blur(); }} ``` ## Plan de commits Une seule PR avec un commit unique : `fix(ui): apply WebKitGTK date picker workaround to remaining 7 inputs (#188)`. ## Criteres d'acceptation - [ ] Workaround applique aux 7 champs listes (4 fichiers) - [ ] Commentaire inline a chaque endroit (court, reference #177) - [ ] CHANGELOG (FR + EN) sous Fixed / Corrige - [ ] Smoke test manuel Linux (Tauri dev) sur au moins 2 des 4 fichiers - [ ] `npm test` + `npm run build` verts (pas de regression visible attendue) ## Complexite **Triviale** (mecanique sur 4 fichiers, 7 insertions identiques). ## Priorite **P3** - cosmetique UX, contournable via Esc.
maximus added the
status:ready
type:bug
labels 2026-05-02 19:56:30 +00:00
maximus added
status:review
and removed
status:ready
labels 2026-05-03 20:19:54 +00:00
maximus added
status:approved
and removed
status:review
labels 2026-05-03 20:33:37 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: maximus/Simpl-Resultat#188
No description provided.