diff --git a/src/routes/cases.$caseId.tsx b/src/routes/cases.$caseId.tsx index b743be3..8d98ed8 100644 --- a/src/routes/cases.$caseId.tsx +++ b/src/routes/cases.$caseId.tsx @@ -352,3 +352,62 @@ function SmallStat({ label, value }: { label: string; value: string }) { ); } + +function EditableRateStat({ + value, + onSave, +}: { + value: number | null; + onSave: (raw: string) => Promise; +}) { + const [editing, setEditing] = useState(false); + const [raw, setRaw] = useState(value != null ? String(value) : ""); + const [saving, setSaving] = useState(false); + + useEffect(() => { + setRaw(value != null ? String(value) : ""); + }, [value]); + + const commit = async () => { + setSaving(true); + const ok = await onSave(raw); + setSaving(false); + if (ok) setEditing(false); + }; + + return ( +
+
Case rate
+ {editing ? ( +
+ $ + setRaw(e.target.value)} + onKeyDown={(e) => { + if (e.key === "Enter") commit(); + if (e.key === "Escape") { setRaw(value != null ? String(value) : ""); setEditing(false); } + }} + autoFocus + className="h-7 px-2 text-sm" + /> + /hr + +
+ ) : ( + + )} +
+ ); +}