From 2b145543f3ec6d6001d85e8ffb910c94ad502700 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matt=C3=A9o=20Delabre?= Date: Wed, 4 Dec 2019 18:16:27 -0500 Subject: [PATCH] app: Corrige focus sortant de la liste --- app/src/data/fuzzy.js | 5 +++-- app/src/util.js | 17 ++++++++++++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/app/src/data/fuzzy.js b/app/src/data/fuzzy.js index dd31a9a..ec05542 100644 --- a/app/src/data/fuzzy.js +++ b/app/src/data/fuzzy.js @@ -42,9 +42,10 @@ const stemWord = word => * @return Liste des mots du nom de terme normalisé. */ const normalizeName = name => - diacritics.remove(name.toLowerCase()) + name.toLowerCase() .split(splitPattern) - .map(stemWord); + .map(stemWord) + .map(word => diacritics.remove(word)); /** * Filtre une liste de termes pour ne garder que ceux qui sont similaires à une diff --git a/app/src/util.js b/app/src/util.js index 7999f32..03b0bad 100644 --- a/app/src/util.js +++ b/app/src/util.js @@ -28,7 +28,10 @@ export const useAsync = (initial, func, ...args) => /** * Crée un état composé d’une liste et d’un élément ayant le focus dans cette * liste. À la modification de la liste ou de l’indice de l’élément ayant le - * focus, la contrainte focus ∈ [0, taille de la liste] est imposée. + * focus, la contrainte suivante est imposée : + * + * — si la liste n’est pas vide, focus ∈ [0, taille de la liste]. + * — sinon, focus = 0. * * @return Objet contenant la liste, l’indice de l’élément ayant le focus ainsi * que des fonctions de modification. @@ -51,7 +54,11 @@ export const useFocusableList = () => setList(nextList) { setList(nextList); - setFocus(Math.min(nextList.length, focus)); + setFocus( + nextList.length === 0 + ? 0 + : Math.min(nextList.length - 1, focus) + ); }, @@ -63,7 +70,11 @@ export const useFocusableList = () => */ setFocus(nextFocus) { - setFocus(Math.min(nextList.length, Math.max(0, focus))); + setFocus( + list.length === 0 + ? 0 + : Math.min(list.length - 1, Math.max(0, nextFocus)) + ); } }; };