fix(input) : InputAutocomplete garde la valeur collée après sélection (MUI-48) #87

Merged
tristan merged 1 commits from feature/MUI-48-le-champ-adresse-disparait-apres-un-copier-coller into develop 2026-06-25 08:42:42 +00:00
Owner

Contexte — MUI-48

« Le champ adresse disparaît après un copier-coller » (Malio UI, bug frontend).

Repro exacte

  1. Taper une adresse, sélectionner une suggestion dans la liste.
  2. Sans re-cliquer dans le champ : Ctrl+A puis Ctrl+V pour remplacer.
  3. → Le champ se vide (label qui redescend, dropdown « Tapez pour rechercher »), la valeur collée est perdue.

À la souris (re-clic dans le champ) le bug ne se produit pas.

Cause racine

onSelect repassait isFocused à false alors que l'input garde le focus DOM (l'option est cliquée en mousedown.prevent). Au collage, onInput émet update:modelValue(null) ; le watch de synchronisation, protégé par le seul isFocused, remettait alors inputValue à ''.

Correctif

onInput resynchronise isFocused = true : recevoir un évènement input prouve que le champ est en cours d'édition. Le watch se protège correctement et ne stompe plus la valeur collée. Correctif d'une ligne, au point exact de la cause.

Tests / vérifs

  • Test de non-régression colocalisé (séquence sélection → Ctrl+A/Ctrl+V) — échoue sans le fix, passe avec.
  • Suite complète : 1057/1057 tests OK, lint sans erreur.
  • Page playground : nouvelle section allowCreate + BAN dédiée au test manuel.
  • CHANGELOG.md : entrée Fixed MUI-48.

🤖 Generated with Claude Code

## Contexte — MUI-48 « Le champ adresse disparaît après un copier-coller » (Malio UI, bug frontend). ## Repro exacte 1. Taper une adresse, **sélectionner une suggestion** dans la liste. 2. Sans re-cliquer dans le champ : `Ctrl+A` puis `Ctrl+V` pour remplacer. 3. → Le champ se **vide** (label qui redescend, dropdown « Tapez pour rechercher »), la valeur collée est perdue. À la souris (re-clic dans le champ) le bug ne se produit pas. ## Cause racine `onSelect` repassait `isFocused` à `false` alors que l'input **garde le focus DOM** (l'option est cliquée en `mousedown.prevent`). Au collage, `onInput` émet `update:modelValue(null)` ; le `watch` de synchronisation, protégé par le seul `isFocused`, remettait alors `inputValue` à `''`. ## Correctif `onInput` resynchronise `isFocused = true` : recevoir un évènement `input` prouve que le champ est en cours d'édition. Le `watch` se protège correctement et ne stompe plus la valeur collée. Correctif d'une ligne, au point exact de la cause. ## Tests / vérifs - Test de non-régression colocalisé (séquence sélection → `Ctrl+A`/`Ctrl+V`) — échoue sans le fix, passe avec. - Suite complète : **1057/1057** tests OK, lint sans erreur. - Page playground : nouvelle section **allowCreate + BAN** dédiée au test manuel. - `CHANGELOG.md` : entrée `Fixed` MUI-48. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
tristan added 1 commit 2026-06-25 08:40:08 +00:00
Après avoir sélectionné une suggestion dans la liste, un collage qui
remplace tout (Ctrl+A puis Ctrl+V, sans re-cliquer dans le champ) vidait
le champ au lieu de prendre la valeur collée.

Cause : onSelect repassait isFocused à false alors que l'input gardait le
focus DOM (option cliquée en mousedown.prevent). Au collage, onInput émet
update:modelValue(null) et le watch de synchronisation, protégé par le seul
isFocused, remettait inputValue à ''. onInput resynchronise désormais
isFocused (un évènement input prouve l'édition).

- test de non-régression colocalisé (séquence sélection → Ctrl+A/Ctrl+V)
- page playground : section allowCreate + BAN dédiée au test
- CHANGELOG : entrée Fixed MUI-48

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
tristan merged commit 82f9321506 into develop 2026-06-25 08:42:42 +00:00
tristan deleted branch feature/MUI-48-le-champ-adresse-disparait-apres-un-copier-coller 2026-06-25 08:42:43 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MALIO-DEV/malio-layer-ui#87