import React, {useState} from 'react'; import { SubmitInput } from './SubmitInput'; type EditableValueProps = { value: string; setValue: (key: string, value: string | number) => Promise; field: string; type: 'text' | 'number'; options?: { min?: number; max?: number; disabled?: boolean; }; } const EditableValue: React.FC = ({ setValue, field, value: currentValue, type, options }) => { const [active, setActive] = useState(false); const submit = (value: string | number) => { if (value === currentValue) { setActive(false); return; } setValue(field, value).then(() => { setActive(false); }); }; if (active) { return submit(type === 'number' ? parseInt(value) : value)} onClick={event => event.stopPropagation()} initialValue={currentValue} type={type} focus={true} min={options?.min} max={options?.max} />; } function onClick(ev) { ev.stopPropagation(); setActive(true); } if (options?.disabled) { return {currentValue}; } return {currentValue} ; }; export default EditableValue;