import React, { useState } from "react"; import { Box, Typography, Chip, Dialog, DialogTitle, DialogContent, DialogActions, Button, Grid } from "@mui/material"; import type { FieldConfig } from "../../../types"; import { applyDisplayFormat } from "../utils"; import { extractFields } from "../../../transformers/field-config"; import { useAppContext } from "../../../context/AppContext"; interface Props { field: FieldConfig; value: any; } const displayLabels: Record = { basic: "Basic", heart_rate: "Heart Rate", dental: "Dental", vaccine: "Vaccine", preop: "PreOp", surgery: "Surgery", }; export function InlineRefField({ field, value }: Props) { const [open, setOpen] = useState(false); const { schemas } = useAppContext(); if (!value || typeof value !== "object") { return ; } const discProp = field.discriminatorProperty; const discValue = discProp ? value[discProp] : undefined; const discChip = discValue ? displayLabels[discValue] ?? discValue : undefined; const tooltip = field.inlineDisplayFormat ? applyDisplayFormat(value, field.inlineDisplayFormat) : undefined; const schema = field.refSchema ? schemas[field.refSchema] : undefined; let subFields: FieldConfig[] = []; if (field.oneOfOptions && field.discriminatorProperty) { const activeOption = field.oneOfOptions.find((o) => o.value === value[field.discriminatorProperty!]); if (activeOption) subFields = activeOption.fields; } else if (schema && field.refSchema) { subFields = extractFields(field.refSchema, schema, schemas); } return ( <> {discChip && } setOpen(true)} sx={{ cursor: "pointer" }} /> setOpen(false)} maxWidth="sm" fullWidth> {field.label} {subFields.map((sf) => ( {sf.label} {value?.[sf.name] == null ? "—" : typeof value[sf.name] === "object" ? (sf.inlineDisplayFormat ? applyDisplayFormat(value[sf.name], sf.inlineDisplayFormat) : JSON.stringify(value[sf.name])) : String(value[sf.name])} ))} ); }