import React, { useState, useEffect } from "react"; import { Button, ButtonGroup, InputGroup, Form } from "react-bootstrap"; import { Icon } from "src/components/Shared"; import { DurationUtils } from "src/utils"; interface IProps { disabled?: boolean; numericValue: number; onValueChange(valueAsNumber: number): void; onReset?(): void; } export const DurationInput: React.FC = (props: IProps) => { const [value, setValue] = useState( DurationUtils.secondsToString(props.numericValue) ); useEffect(() => { setValue(DurationUtils.secondsToString(props.numericValue)); }, [props.numericValue]); function increment() { let seconds = DurationUtils.stringToSeconds(value); seconds += 1; props.onValueChange(seconds); } function decrement() { let seconds = DurationUtils.stringToSeconds(value); seconds -= 1; props.onValueChange(seconds); } function renderButtons() { return ( ); } function onReset() { if (props.onReset) { props.onReset(); } } function maybeRenderReset() { if (props.onReset) { return ( ); } } return ( setValue(e.target.value)} onBlur={() => props.onValueChange(DurationUtils.stringToSeconds(value)) } placeholder="hh:mm:ss" /> {maybeRenderReset()} {renderButtons()} ); };