Navigace mezi dny klávesovými šipkami

This commit is contained in:
Martin Berka 2023-09-18 22:56:38 +02:00
parent bc181defa8
commit 8ec87ec200

View File

@ -1,4 +1,4 @@
import React, { useContext, useEffect, useMemo, useRef, useState } from 'react'; import React, { useContext, useEffect, useMemo, useRef, useState, useCallback } from 'react';
import 'bootstrap/dist/css/bootstrap.min.css'; import 'bootstrap/dist/css/bootstrap.min.css';
import { EVENT_DISCONNECT, EVENT_MESSAGE, SocketContext } from './context/socket'; import { EVENT_DISCONNECT, EVENT_MESSAGE, SocketContext } from './context/socket';
import { addChoice, addPizza, changeDepartureTime, createPizzaDay, deletePizzaDay, errorHandler, finishDelivery, finishOrder, getData, getQrUrl, lockPizzaDay, removeChoice, removeChoices, removePizza, unlockPizzaDay, updateNote } from './Api'; import { addChoice, addPizza, changeDepartureTime, createPizzaDay, deletePizzaDay, errorHandler, finishDelivery, finishOrder, getData, getQrUrl, lockPizzaDay, removeChoice, removeChoices, removePizza, unlockPizzaDay, updateNote } from './Api';
@ -156,6 +156,22 @@ function App() {
} }
}, [choiceRef.current?.value, food]) }, [choiceRef.current?.value, food])
// Navigace mezi dny pomocí klávesových šípek
const handleKeyDown = useCallback((e: any) => {
if (e.keyCode == 37 && dayIndex != null && dayIndex > 0) {
handleDayChange(dayIndex - 1);
} else if (e.keyCode == 39 && dayIndex != null && dayIndex < 4) {
handleDayChange(dayIndex + 1);
}
}, [dayIndex]);
useEffect(() => {
document.addEventListener('keydown', handleKeyDown);
return () => {
document.removeEventListener('keydown', handleKeyDown);
}
}, [handleKeyDown]);
// Index v týdnu dnešního dne (0-6) // Index v týdnu dnešního dne (0-6)
// TODO tohle má posílat server, klient je nespolehlivý // TODO tohle má posílat server, klient je nespolehlivý
const currentDayIndex = useMemo(() => { const currentDayIndex = useMemo(() => {
@ -359,6 +375,7 @@ function App() {
Poslední změny: Poslední změny:
<ul> <ul>
<li>Ochrana proti některým Stánkovinám</li> <li>Ochrana proti některým Stánkovinám</li>
<li>Navigace mezi dny klávesovými šipkami</li>
</ul> </ul>
</Alert> </Alert>
{dayIndex != null && {dayIndex != null &&