Fixed edit node modal not being updated with opening of modal

This commit is contained in:
Lucas Oliveira 2024-06-05 18:39:36 -03:00
commit a1e521f2c6
2 changed files with 21 additions and 21 deletions

View file

@ -10,6 +10,7 @@ const useColumnDefs = (
myData: any, myData: any,
handleOnNewValue: (newValue: any, name: string) => void, handleOnNewValue: (newValue: any, name: string) => void,
changeAdvanced: (n: string) => void, changeAdvanced: (n: string) => void,
open: boolean,
) => { ) => {
const columnDefs: ColDef[] = useMemo( const columnDefs: ColDef[] = useMemo(
() => [ () => [
@ -81,7 +82,7 @@ const useColumnDefs = (
cellClass: "no-border", cellClass: "no-border",
}, },
], ],
[], [open],
); );
return columnDefs; return columnDefs;

View file

@ -1,6 +1,6 @@
import { ColDef } from "ag-grid-community"; import { ColDef, GridApi } from "ag-grid-community";
import { cloneDeep } from "lodash"; import { cloneDeep } from "lodash";
import { forwardRef, useEffect, useRef } from "react"; import { forwardRef, useEffect, useRef, useState } from "react";
import IconComponent from "../../components/genericIconComponent"; import IconComponent from "../../components/genericIconComponent";
import TableComponent from "../../components/tableComponent"; import TableComponent from "../../components/tableComponent";
import { Badge } from "../../components/ui/badge"; import { Badge } from "../../components/ui/badge";
@ -25,11 +25,7 @@ const EditNodeModal = forwardRef(
}, },
ref, ref,
) => { ) => {
const nodes = useFlowStore((state) => state.nodes); const myData = useRef(data);
const dataFromStore = nodes.find((node) => node.id === node.id)?.data;
const myData = useRef(dataFromStore ?? data);
const setNode = useFlowStore((state) => state.setNode); const setNode = useFlowStore((state) => state.setNode);
@ -42,30 +38,30 @@ const EditNodeModal = forwardRef(
myData.current.node!.template[name].value = newValue; myData.current.node!.template[name].value = newValue;
}; };
useEffect(() => {
if (open) {
const cloneData = cloneDeep(dataFromStore ?? data);
myData.current = cloneData;
}
}, [open]);
const rowData = useRowData(myData, open); const rowData = useRowData(myData, open);
const columnDefs: ColDef[] = useColumnDefs( const columnDefs: ColDef[] = useColumnDefs(
myData, myData,
handleOnNewValue, handleOnNewValue,
changeAdvanced, changeAdvanced,
open,
); );
const [gridApi, setGridApi] = useState<GridApi | null>(null);
useEffect(() => {
if (gridApi && open) {
myData.current = data;
gridApi.refreshCells();
}
}, [gridApi, open]);
return ( return (
<BaseModal <BaseModal
key={data.id} key={data.id}
size="medium-tall" size="medium-tall"
open={open} open={open}
setOpen={setOpen} setOpen={setOpen}
onChangeOpenModal={(open) => {
myData.current = data;
}}
onSubmit={() => { onSubmit={() => {
setNode(data.id, (old) => ({ setNode(data.id, (old) => ({
...old, ...old,
@ -80,9 +76,9 @@ const EditNodeModal = forwardRef(
<BaseModal.Trigger> <BaseModal.Trigger>
<></> <></>
</BaseModal.Trigger> </BaseModal.Trigger>
<BaseModal.Header description={myData.current.node?.description!}> <BaseModal.Header description={data.node?.description!}>
<span className="pr-2">{myData.current.type}</span> <span className="pr-2">{data.type}</span>
<Badge variant="secondary">ID: {myData.current.id}</Badge> <Badge variant="secondary">ID: {data.id}</Badge>
</BaseModal.Header> </BaseModal.Header>
<BaseModal.Content> <BaseModal.Content>
<div className="flex h-full flex-col"> <div className="flex h-full flex-col">
@ -97,6 +93,9 @@ const EditNodeModal = forwardRef(
<div className="h-full"> <div className="h-full">
{nodeLength > 0 && ( {nodeLength > 0 && (
<TableComponent <TableComponent
onGridReady={(params) => {
setGridApi(params.api);
}}
tooltipShowDelay={0.5} tooltipShowDelay={0.5}
columnDefs={columnDefs} columnDefs={columnDefs}
rowData={rowData} rowData={rowData}