diff --git a/src/components/toolbox/pomodoro/setting/setting.tsx b/src/components/toolbox/pomodoro/setting/setting.tsx index e3b9eb1..7a45d3d 100644 --- a/src/components/toolbox/pomodoro/setting/setting.tsx +++ b/src/components/toolbox/pomodoro/setting/setting.tsx @@ -12,18 +12,38 @@ interface SettingProps { } export function Setting({ onChange, onClose, show, times }: SettingProps) { - const [values, setValues] = useState(times); + const [values, setValues] = useState>(times); - useEffect(() => setValues(times), [times]); + useEffect(() => { + if (show) setValues(times); + }, [times, show]); - const handleChange = (id: string) => (value: number) => { - setValues(prev => ({ ...prev, [id]: value * 60 })); + const handleChange = (id: string) => (value: number | string) => { + setValues(prev => ({ + ...prev, + [id]: typeof value === 'number' ? value * 60 : '', + })); }; - const handleSubmit = e => { + const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); - onChange(values); + console.log({ values }); + + const newValues: Record = {}; + + Object.keys(values).forEach(name => { + newValues[name] = + typeof values[name] === 'number' ? values[name] : times[name]; + }); + + onChange(newValues); + }; + + const handleCancel = (e: React.MouseEvent) => { + e.preventDefault(); + + onClose(); }; return ( @@ -34,32 +54,29 @@ export function Setting({ onChange, onClose, show, times }: SettingProps) {
- - +
@@ -69,8 +86,8 @@ export function Setting({ onChange, onClose, show, times }: SettingProps) { interface FieldProps { id: string; label: string; - onChange: (value: number) => void; - value: number; + onChange: (value: number | string) => void; + value: number | string; } function Field({ id, label, onChange, value }: FieldProps) { @@ -83,9 +100,12 @@ function Field({ id, label, onChange, value }: FieldProps) { className={styles.input} max={120} min={1} + required type="number" - value={value} - onChange={e => onChange(Number(e.target.value))} + value={typeof value === 'number' ? value / 60 : ''} + onChange={e => { + onChange(e.target.value === '' ? '' : Number(e.target.value)); + }} /> );