Skip to content

Commit 32e9abc

Browse files
committed
add arrow key navigation to DrawingPage
1 parent 0826f86 commit 32e9abc

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

explorer/components/DrawingPage.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,25 @@ import Link from 'next/link'
44
import { assetPrefix } from '../lib/assetPrefix'
55
import styled from 'styled-components'
66
import { getPreviousSlug, getNextSlug } from '../lib/drawings'
7+
import { useRouter } from 'next/router'
78

89
export const DrawingPage: React.FC<{ drawing: Drawing, year: number }> = ({ drawing, year }) => {
10+
const router = useRouter()
11+
const goToPrevious = () => router.push(`/drawing/${getPreviousSlug(drawing.slug)}`)
12+
const goToNext = () => router.push(`/drawing/${getNextSlug(drawing.slug)}`)
13+
14+
const onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {
15+
const handler = ({
16+
ArrowUp: goToPrevious,
17+
ArrowDown: goToNext,
18+
ArrowLeft: goToPrevious,
19+
ArrowRight: goToNext,
20+
} as Record<string, Function>)[event.key]
21+
handler?.()
22+
}
23+
924
return (
10-
<Container>
25+
<Container onKeyDown={onKeyDown} tabIndex={-1}>
1126
<Title>{drawing.title}</Title>
1227
<ImageWrap>
1328
<Image src={`${assetPrefix}/images/${drawing.image}`} alt={drawing.title} />

0 commit comments

Comments
 (0)