import { GridCellEditStopReasons, useGridApiContext } from "@mui/x-data-grid" import { EditorProperty, ObjectValueType, fillDefaultValue } from "@iplusplus/y-model" import { useState } from "react" import { PropertyGridDialog } from "../../propertygrid" import { CellRender, CellRenderBuilder2, CellRenderParam } from "../types" function PropertyGridDialogCell({ cellParams, objectType, }: { cellParams: CellRenderParam objectType: ObjectValueType }) { const { id, value, field } = cellParams const apiRef = useGridApiContext() // const ref = React.useRef(); const [open, setOpen] = useState(true) const onClose = (data?: Record) => { setOpen(false) apiRef.current.stopCellEditMode({ id, field, }) if (data) { apiRef.current.setEditCellValue({ id, field, value: data }) } apiRef.current.publishEvent("cellEditStop", { ...cellParams, reason: GridCellEditStopReasons.cellFocusOut, }) } const v2 = fillDefaultValue(objectType.subProperty, value) // console.log("render ObjectArrayEditorDialog") return open ? : null } // export function createObjectEditRender(objectType: ObjectType):EditCellRender{ // return (params)=>{ // return // } // } // // export function createObjectEditRender(objectType: ObjectValueType): CellRender { return params => { return } } function createObjectRender(objectType: ObjectValueType): CellRender { return params => { const { value } = params return
{objectType.showString(value)}
} } export const objectRenderBuilder: CellRenderBuilder2 = (property: EditorProperty) => { if (property.valueType.dataTypeName === "object") { const vt = property.valueType return { editorCellRender: createObjectEditRender(vt), cellRender: createObjectRender(vt), } } return undefined }