fix(input) : InputAutocomplete garde la valeur collée après sélection (MUI-48) (#87)
## 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) Reviewed-on: #87 Co-authored-by: tristan <tristan@yuno.malio.fr> Co-committed-by: tristan <tristan@yuno.malio.fr>
This commit was merged in pull request #87.
This commit is contained in:
@@ -393,6 +393,11 @@ const scheduleSearch = () => {
|
||||
|
||||
const onInput = (event: Event) => {
|
||||
const target = event.target as HTMLInputElement
|
||||
// Un évènement input prouve que le champ est en cours d'édition : on resynchronise
|
||||
// isFocused, qu'une sélection précédente (onSelect) a pu passer à false tout en gardant
|
||||
// le focus DOM (clic option en mousedown.prevent). Sans ça, le watch ci-dessous remettrait
|
||||
// inputValue à '' au collage et la valeur collée serait perdue (MUI-48).
|
||||
isFocused.value = true
|
||||
inputValue.value = target.value
|
||||
if (!isOpen.value) isOpen.value = true
|
||||
activeIndex.value = -1
|
||||
|
||||
Reference in New Issue
Block a user