ltbxd-actorle/assets/react/controllers/LetterInput.jsx
2026-04-11 10:58:33 +02:00

33 lines
1,007 B
JavaScript

import React, { useCallback } from 'react';
export default function LetterInput({ highlighted, onNext, onPrev, inputRef, value, disabled = false }) {
const handleKeyUp = useCallback((e) => {
if (disabled || value !== undefined) {
return;
}
if (e.key === 'Backspace') {
e.target.value = '';
onPrev?.();
} else if (e.key.length === 1 && /[a-zA-Z]/.test(e.key)) {
e.target.value = e.key.toUpperCase();
onNext?.();
}
}, [disabled, onNext, onPrev, value]);
return (
<td>
<input
ref={inputRef}
type="text"
maxLength={1}
className={`letter-input${highlighted ? ' letter-highlighted' : ''}`}
value={value}
disabled={disabled}
readOnly={value !== undefined}
onKeyUp={handleKeyUp}
autoComplete="off"
/>
</td>
);
}