import { Stack, TextField, Typography } from "@mui/material"; import { NumberConstraint, ServerApi } from "../../api/ServerApi"; import { DateValue, fmtDate } from "../../api/genealogy/MemberApi"; import { PropEdit } from "./PropEdit"; export function DateInput(p: { id: string; label: string; editable: boolean; value?: DateValue; onValueChange: (newVal: DateValue) => void; }): React.ReactElement { if (!p.editable) { if (!p.value) return <>; return ( ); } return ( {p.label} { const val = Number(e.target.value); p.onValueChange({ day: val > 0 ? val : undefined, month: p.value?.month, year: p.value?.year, }); }} inputProps={{ min: ServerApi.Config.constraints.date_day.min, max: ServerApi.Config.constraints.date_day.max, }} /> { const val = Number(e.target.value); p.onValueChange({ day: p.value?.day, month: val > 0 ? val : undefined, year: p.value?.year, }); }} inputProps={{ min: ServerApi.Config.constraints.date_month.min, max: ServerApi.Config.constraints.date_month.max, }} /> { const val = Number(e.target.value); p.onValueChange({ day: p.value?.day, month: p.value?.month, year: val > 0 ? val : undefined, }); }} error={isValErr(p.value?.year, ServerApi.Config.constraints.date_year)} variant="filled" style={{ flex: 30 }} type="number" inputProps={{ min: ServerApi.Config.constraints.date_year.min, max: ServerApi.Config.constraints.date_year.max, }} /> ); } function Separator(): React.ReactElement { return ( / ); } function isValErr(val: number | undefined, c: NumberConstraint): boolean { return (val && (val < c.min || val > c.max)) || false; }