app: Corrige focus sortant de la liste

This commit is contained in:
Mattéo Delabre 2019-12-04 18:16:27 -05:00
parent c2fb067c77
commit 2b145543f3
Signed by: matteo
GPG Key ID: AE3FBD02DC583ABB
2 changed files with 17 additions and 5 deletions

View File

@ -42,9 +42,10 @@ const stemWord = word =>
* @return Liste des mots du nom de terme normalisé. * @return Liste des mots du nom de terme normalisé.
*/ */
const normalizeName = name => const normalizeName = name =>
diacritics.remove(name.toLowerCase()) name.toLowerCase()
.split(splitPattern) .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 * Filtre une liste de termes pour ne garder que ceux qui sont similaires à une

View File

@ -28,7 +28,10 @@ export const useAsync = (initial, func, ...args) =>
/** /**
* Crée un état composé dune liste et dun élément ayant le focus dans cette * Crée un état composé dune liste et dun élément ayant le focus dans cette
* liste. À la modification de la liste ou de lindice de lélément ayant le * liste. À la modification de la liste ou de lindice 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 nest pas vide, focus [0, taille de la liste].
* sinon, focus = 0.
* *
* @return Objet contenant la liste, lindice de lélément ayant le focus ainsi * @return Objet contenant la liste, lindice de lélément ayant le focus ainsi
* que des fonctions de modification. * que des fonctions de modification.
@ -51,7 +54,11 @@ export const useFocusableList = () =>
setList(nextList) setList(nextList)
{ {
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(nextFocus)
{ {
setFocus(Math.min(nextList.length, Math.max(0, focus))); setFocus(
list.length === 0
? 0
: Math.min(list.length - 1, Math.max(0, nextFocus))
);
} }
}; };
}; };