Add support for keyboard events

This commit is contained in:
Thomas Nordquist
2019-06-24 11:22:50 +02:00
parent f691a7a0ae
commit ba91730f43
8 changed files with 397 additions and 313 deletions

View File

@@ -0,0 +1,24 @@
import { useEffect } from 'react'
import { KeyCodes } from '../utils/KeyCodes'
export function useGlobalKeyEventHandler(
key: KeyCodes | undefined,
callback: (event: KeyboardEvent) => void,
dependencies?: Array<any>
) {
useEffect(() => {
function handleKeyEvent(event: KeyboardEvent) {
if (key === undefined) {
callback(event)
} else if (event.keyCode === key) {
callback(event)
event.preventDefault()
}
}
document.addEventListener('keydown', handleKeyEvent, false)
return function cleanup() {
document.removeEventListener('keydown', handleKeyEvent, false)
}
}, dependencies)
}