import React, { useState, useRef } from "react"; import { Box, Label, Input, Button, Flex, Text } from "theme-ui"; import Modal from "../components/Modal"; import { getHMSDuration, getDurationHMS } from "../helpers/timer"; function StartTimerModal({ isOpen, onRequestClose, onTimerStart, onTimerStop, timer, }) { const inputRef = useRef(); function focusInput() { inputRef.current && inputRef.current.focus(); } const [hour, setHour] = useState(0); const [minute, setMinute] = useState(0); const [second, setSecond] = useState(0); function handleSubmit(event) { event.preventDefault(); if (timer) { onTimerStop(); } else { const duration = getHMSDuration({ hour, minute, second }); onTimerStart({ current: duration, max: duration }); } } const inputStyle = { width: "70px", border: "none", ":focus": { outline: "none", }, fontSize: "32px", padding: 2, paddingLeft: 0, }; function parseValue(value, max) { const num = parseInt(value); if (isNaN(num)) { return 0; } return Math.min(num, max); } const timerHMS = timer && getDurationHMS(timer.current); return ( H: setHour(parseValue(e.target.value, 24))} type="number" disabled={timer} min={0} max={24} /> M: setMinute(parseValue(e.target.value, 59))} type="number" ref={inputRef} disabled={timer} min={0} max={59} /> S: setSecond(parseValue(e.target.value, 59))} type="number" disabled={timer} min={0} max={59} /> ); } export default StartTimerModal;