fix(budget): note — auto-focus/select seulement si vide #1

Closed
opened 2026-09-01 20:50:03 +02:00 by alexis · 0 comments
Owner

Contexte
Onglet Budget → icône note (StickyNote2) → ModalBottomSheet avec OutlinedTextField (BudgetScreen.kt:226-264).

Actuel

  • noteText init via remember(monthKey) { mutableStateOf(Store.monthNotes[monthKey] ?: "") }
  • Pas de FocusRequester : le champ prend le focus aléatoirement selon le bottomSheet (clavier s’ouvre même si la note existe).

Repro

  1. Budget → Juin 2026 → note vide → ouvre note → clavier s’ouvre (ok)
  2. Saisis "Courses juin" → Enregistrer → rouvre la même note → le champ est encore auto-focus/sélectionné (clavier couvre la note) → attendu : juste afficher, tap pour éditer.

Attendu (spec)

  • Si note.isEmpty()FocusRequester.requestFocus() + SelectAll + clavier auto.
  • Si note.isNotEmpty() → afficher en lecture, pas de focus auto ; tap dans le OutlinedTextField → focus + édition.
  • onDismissRequest / EnregistrerStore.setMonthNote(monthKey, noteText) inchangé.

Acceptance

  • FocusRequester + LaunchedEffect(note.isEmpty()) dans showMonthNote
  • TextField readOnly faux mais focus seulement si vide au premier frame
  • Pas de régression : Store.monthNotes + persist() ok, monthKey switch conserve le comportement
  • Test manuel : vide → focus, avec texte → pas de clavier jusqu’au tap
**Contexte** Onglet Budget → icône note (StickyNote2) → `ModalBottomSheet` avec `OutlinedTextField` (`BudgetScreen.kt:226-264`). **Actuel** - `noteText` init via `remember(monthKey) { mutableStateOf(Store.monthNotes[monthKey] ?: "") }` - Pas de `FocusRequester` : le champ prend le focus aléatoirement selon le bottomSheet (clavier s’ouvre même si la note existe). **Repro** 1. Budget → Juin 2026 → note vide → ouvre note → clavier s’ouvre (ok) 2. Saisis "Courses juin" → Enregistrer → rouvre la même note → le champ est encore auto-focus/sélectionné (clavier couvre la note) → attendu : juste afficher, tap pour éditer. **Attendu (spec)** - Si `note.isEmpty()` → `FocusRequester.requestFocus()` + `SelectAll` + clavier auto. - Si `note.isNotEmpty()` → afficher en lecture, pas de focus auto ; tap dans le `OutlinedTextField` → focus + édition. - `onDismissRequest` / `Enregistrer` → `Store.setMonthNote(monthKey, noteText)` inchangé. **Acceptance** - [ ] `FocusRequester` + `LaunchedEffect(note.isEmpty())` dans `showMonthNote` - [ ] `TextField` `readOnly` faux mais focus seulement si vide au premier frame - [ ] Pas de régression : `Store.monthNotes` + `persist()` ok, `monthKey` switch conserve le comportement - [ ] Test manuel : vide → focus, avec texte → pas de clavier jusqu’au tap
Sign in to join this conversation.
No labels
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
alexis/demo_m3#1
No description provided.