bugfix: Valeur du input n'était pas prise en compte lors de la validation avec le clavier (édition cas type)
Pour la postérité, et pour comprendre dans le futur pourquoi on a un setTimeout
de 1ms dans le code.
Étapes de reproduction du bug :
- Éditer un cas type
- Changer une valeur (par exemple le salaire)
- Appuyer sur la touche "entrée" du clavier pour valider
Description du bug (comportement inattendu) :
La valeur n'est pas modifiée.
Débogage :
La variable situation
est passée du composant parent => TestCaseEdit
=> VariableInput
(encapsulés dans cet ordre). Une modification est détectée par un on:change
sur l'<input>
qui propage le changement et le fait remonter au composant parent.
- Lorsque le bouton flottant "Valider" est cliqué => tout fonctionne
✅ - Lorsque la touche "entrée" du clavier est appuyée => le bug apparaît
❌
Pourquoi ?
-
La modification a le temps de se propager et cela est dû à la différence de temps minime (quelques millisecondes) entre le déclenchement du
on:change
et le clic sur "valider". -
Lorsque la touche du clavier est appuyée, il n'y a pas de temps qui permet la propagation du changement avant la fermeture du panneau d'édition. De ce fait, les parents se détachent directement et la changement n'a pas lieu.
Bug fix :
-
click down
sur "valider" déclenche leon:change
, etclick up
déclenche la fermeture du panneau d'édition. - Pour compenser cela, nous ajoutons un délai de 1ms avant la fermeture du panneau d'édition.