diff --git a/src/app/admin/_components/FormField.tsx b/src/app/admin/_components/FormField.tsx index 0f64d88..e923387 100644 --- a/src/app/admin/_components/FormField.tsx +++ b/src/app/admin/_components/FormField.tsx @@ -45,17 +45,37 @@ export function ParticipantLimits({ onMinChange: (v: number) => void; onMaxChange: (v: number) => void; }) { + const [minLocal, setMinLocal] = useState(min); + const [maxLocal, setMaxLocal] = useState(max); + const maxError = maxLocal > 0 && minLocal > 0 && maxLocal < minLocal; + + function handleMin(v: number) { + setMinLocal(v); + const newMaxError = maxLocal > 0 && v > maxLocal; + if (!newMaxError) onMinChange(v); + } + + function handleMax(v: number) { + setMaxLocal(v); + const newMaxError = v > 0 && minLocal > 0 && v < minLocal; + if (!newMaxError) onMaxChange(v); + } + return (
- onMinChange(parseInt(e.target.value) || 0)} className={inputCls} /> + handleMin(parseInt(e.target.value) || 0)} + className={`${inputCls} ${maxError ? "!border-red-500/50" : ""}`} />

Если записей меньше — занятие можно отменить

- onMaxChange(parseInt(e.target.value) || 0)} className={inputCls} /> -

0 = без лимита. При заполнении — лист ожидания

+ handleMax(parseInt(e.target.value) || 0)} + className={`${inputCls} ${maxError ? "!border-red-500/50" : ""}`} /> +

+ {maxError ? "Макс. не может быть меньше мин." : "0 = без лимита. При заполнении — лист ожидания"} +

);