import { Accordion, AccordionDetails, AccordionSummary, Box, IconButton, Typography, } from '@mui/material'; import React, { useContext, useEffect } from 'react'; import Grid from '@mui/material/Grid2'; import { JsonFormsDispatch, useJsonForms } from '@jsonforms/react'; import { ButtonIcon } from '../../common/ButtonIcon'; import { composePaths } from '@jsonforms/core'; import { DataContext } from '../../context/Context'; import _ from 'lodash'; const ArrayLayoutRenderer = (props) => { const { uischema, schema, path, renderers, enabled, cells, index, theme, handleDelete, arrayExpendState, componentStyle } = props; const { handleToggleArray = {} } = useContext(DataContext); const [expanded, setExpanded] = React.useState( arrayExpendState?.[path] ?? false, ); const ctx = useJsonForms(); const childPath = composePaths(path, `${index}`); console.log(schema); useEffect(() => { if (arrayExpendState[path] !== null) { setExpanded(arrayExpendState[path] ?? false); } }, [arrayExpendState[path]]); console.log(arrayExpendState[path]); return ( { setExpanded((prev) => !prev); handleToggleArray(path, null); }} sx={{ marginTop: 1, padding: { xs: '4px 2px', md: '6px 4px' }, borderRadius: '6px', boxShadow: '0px 1px 3px rgba(0,0,0,0.25)', '::before': { display: 'none' }, ...componentStyle?.childAccordionStyle, }} > {!uischema.config.main?.disableRowActions && ( {/* Left */} {index + 1} {uischema.config.main?.showKeyAsLabel ? ctx.core.data?.[path]?.[index]?.[ uischema.config.main?.showKeyAsLabel ] : uischema.config.main?.childElementLabel} { e.preventDefault(); e.stopPropagation(); handleDelete(index); }} sx={{ fill: theme.myTheme.palette.common.black, '&:hover': { fill: theme.myTheme.palette.primary.main }, display: ctx.core.data?.[path]?.[index]?.disableDelete ? 'none' : 'inline-block', ...uischema.config.style?.rowDeleteButtonStyle, }} > {ButtonIcon('Bin', {})} )} {uischema?.elements?.map((uischemaItem, i) => { const schemaClone = _.cloneDeep(schema); if (ctx.core.data?.[path]?.[index]?.disableRow) { const keysArray = Object.keys(schemaClone.properties); keysArray.map((e) => { schemaClone.properties[e].disabled = true; }); } return ( ); })} ); }; export default ArrayLayoutRenderer;