web/composer: fix using arrow keys to pick autocomplete results

This commit is contained in:
Tulir Asokan 2024-10-22 20:05:26 +03:00
parent 082e5642aa
commit e2458c7657
2 changed files with 5 additions and 2 deletions

View file

@ -42,6 +42,9 @@ const positiveMod = (val: number, div: number) => (val % div + div) % div
export const EmojiAutocompleter = ({ params, state, setState, setAutocomplete }: AutocompleterProps) => {
const emojis = useFilteredEmojis((params.frozenQuery ?? params.query).slice(1), true)
const onSelect = useEvent((index: number) => {
if (emojis.length === 0) {
return
}
index = positiveMod(index, emojis.length)
const emoji = emojis[index]
setState({

View file

@ -150,10 +150,10 @@ const MessageComposer = ({ room, scrollToBottomRef, setReplyToRef }: MessageComp
sendMessage(evt)
}
if (autocomplete && !evt.ctrlKey && !evt.altKey) {
if (!evt.shiftKey && (evt.key === "Tab" || evt.key === "Down")) {
if (!evt.shiftKey && (evt.key === "Tab" || evt.key === "ArrowDown")) {
setAutocomplete({ ...autocomplete, selected: (autocomplete.selected ?? -1) + 1 })
evt.preventDefault()
} else if ((evt.shiftKey && evt.key === "Tab") || (!evt.shiftKey && evt.key === "Up")) {
} else if ((evt.shiftKey && evt.key === "Tab") || (!evt.shiftKey && evt.key === "ArrowUp")) {
setAutocomplete({ ...autocomplete, selected: (autocomplete.selected ?? 0) - 1 })
evt.preventDefault()
}