diff --git a/src/frontend/src/components/core/parameterRenderComponent/components/TableNodeComponent/index.tsx b/src/frontend/src/components/core/parameterRenderComponent/components/TableNodeComponent/index.tsx index db3db4147..5c6c42471 100644 --- a/src/frontend/src/components/core/parameterRenderComponent/components/TableNodeComponent/index.tsx +++ b/src/frontend/src/components/core/parameterRenderComponent/components/TableNodeComponent/index.tsx @@ -65,10 +65,12 @@ export default function TableNodeComponent({ }; }, []); const [selectedNodes, setSelectedNodes] = useState>([]); + const [tempValue, setTempValue] = useState(cloneDeep(value)); + const [isModalOpen, setIsModalOpen] = useState(false); const agGrid = useRef(null); const componentColumns = columns ? columns - : generateBackendColumnsFromValue(value ?? [], table_options); + : generateBackendColumnsFromValue(tempValue ?? [], table_options); let AgColumns = FormatColumns(componentColumns); // add info to each column AgColumns = AgColumns.map((col) => { @@ -93,7 +95,7 @@ export default function TableNodeComponent({ if (agGrid.current && !agGrid.current.api.isDestroyed()) { const rows: any = []; agGrid.current.api.forEachNode((node) => rows.push(node.data)); - handleOnNewValue({ value: rows }); + setTempValue(rows); } } function deleteRow() { @@ -109,8 +111,7 @@ export default function TableNodeComponent({ if (agGrid.current && selectedNodes.length > 0) { const toDuplicate = selectedNodes.map((node) => cloneDeep(node.data)); setSelectedNodes([]); - const rows: any = []; - handleOnNewValue({ value: [...value, ...toDuplicate] }); + setTempValue([...tempValue, ...toDuplicate]); } } function addRow() { @@ -118,12 +119,23 @@ export default function TableNodeComponent({ componentColumns.forEach((column) => { newRow[column.name] = column.default ?? null; // Use the default value if available }); - handleOnNewValue({ value: [...value, newRow] }); + setTempValue([...tempValue, newRow]); } function updateComponent() { setAllRows(); } + + function handleSave() { + handleOnNewValue({ value: tempValue }); + setIsModalOpen(false); + } + + function handleCancel() { + setTempValue(cloneDeep(value)); + setIsModalOpen(false); + } + const editable = componentColumns .map((column) => { const isCustomEdit = @@ -149,6 +161,8 @@ export default function TableNodeComponent({ >