import React from "react";
import isEmpty from "lodash/isEmpty";
import type { UISchemaElement } from "@jsonforms/core";
import {
JsonFormsCellRendererRegistryEntry,
JsonFormsRendererRegistryEntry,
JsonSchema,
OwnPropsOfRenderer,
} from "@jsonforms/core";
import { JsonFormsDispatch, useJsonForms } from "@jsonforms/react";
import Grid from "@mui/material/Grid2";
import { isHidden } from "../common/getHiddenKeys";
export const renderLayoutElements = (
elements: any,
schema: JsonSchema | undefined,
path: string | undefined,
enabled: boolean | undefined,
renderers?: JsonFormsRendererRegistryEntry[],
cells?: JsonFormsCellRendererRegistryEntry[]
) => {
return elements.map((child: any, index: number) => {
if (isHidden(child, schema)) {
return null;
}
return (
);
});
};
export interface MaterialLayoutRendererProps extends OwnPropsOfRenderer {
elements: UISchemaElement[];
direction: "row" | "column";
}
const MaterialLayoutRendererComponent = ({
visible,
elements,
schema,
path,
enabled,
direction,
renderers,
cells,
}: MaterialLayoutRendererProps) => {
if (isEmpty(elements)) {
return null;
} else {
return (
{renderLayoutElements(
elements,
schema,
path,
enabled,
renderers,
cells
)}
);
}
};
export const MaterialLayoutRenderer = React.memo(
MaterialLayoutRendererComponent
);