import { FormControl, InputLabel, Select, MenuItem } from '@mui/material'; import { getFieldOptions } from '../../utils/options'; import { FieldComponentProps } from '../../types/overrides'; export default function RelationField({ field, value, onChange, disabled, relationDataMap = {} }: FieldComponentProps) { const relationName = field.relation ?? (field as any).refers; if (!relationName || !relationDataMap[relationName]) { throw new Error(`Relation data for "${relationName}" is missing – cannot render options for field "${field.label}"`); } const relationData = relationDataMap[relationName]; const isArrayRelation = field.type === 'array'; const options = getFieldOptions(field, relationData); if (options.length === 0) { throw new Error(`No selectable options available for field "${field.label}" (relation "${relationName}")`); } const keyField = field.enumOption?.key ?? 'id'; const normalizedValue = (() => { if (isArrayRelation && Array.isArray(value)) { return value.map((v: any) => (v != null && typeof v === 'object' ? String(v[keyField] ?? '') : String(v))); } if (value != null && typeof value === 'object') { return String(value[keyField] ?? ''); } return value ?? (isArrayRelation ? [] : ""); })(); return ( {field.label} ); }