file show: scroll vertically with keyboard arrows
Massimo Melina committed
Jul 26, 2023 at 23:09 UTC
982195924afefab06941d69d715057dc6a56c0d8
1 file changed
+9
-1
frontend/src/show.ts
+9
-1
@@ -28,6 +28,10 @@ export function fileShow(entry: DirEntry) {
28
return go(-1)
29
if (key === 'ArrowRight')
30
return go(+1)
31
+ if (key === 'ArrowDown')
32
+ return scrollY(1)
33
+ if (key === 'ArrowUp')
34
+ return scrollY(-1)
35
if (key === 'd')
36
return location.href = cur.uri + '?dl'
37
if (key === 'z')
@@ -49,7 +53,7 @@ export function fileShow(entry: DirEntry) {
53
const [loading, setLoading] = useState(false)
54
const [failed, setFailed] = useState<false | string>(false)
55
const containerRef = useRef<HTMLDivElement>()
52
- useEffect(() => { containerRef.current?.scrollTo(0,0) }, [cur])
56
+ useEffect(() => { scrollY(-1E9) }, [cur])
57
const {t} = useI18N()
58
return h(Fragment, {},
59
h(FlexV, {
@@ -121,6 +125,10 @@ export function fileShow(entry: DirEntry) {
125
function switchZoomMode() {
126
setMode(x => x ? x - 1 : ZoomMode.contain)
127
}
128
+
129
+ function scrollY(dy: number) {
130
+ containerRef.current?.scrollBy(0, dy * .5 * containerRef.current?.clientHeight)
131
+ }
132
}
133
})
134
}