From 9bd5052065d900e6e1fc19d5cc1718fecd0d0075 Mon Sep 17 00:00:00 2001 From: Kavin Venkatachalam Date: Wed, 2 Apr 2025 13:23:38 +0530 Subject: [PATCH] fix: bug on autoColumnGeneration when the new data format is passed to the Table --- frontend/src/AppBuilder/Widgets/NewTable/Table.jsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/frontend/src/AppBuilder/Widgets/NewTable/Table.jsx b/frontend/src/AppBuilder/Widgets/NewTable/Table.jsx index e510483f72..10252b0be2 100644 --- a/frontend/src/AppBuilder/Widgets/NewTable/Table.jsx +++ b/frontend/src/AppBuilder/Widgets/NewTable/Table.jsx @@ -2,12 +2,13 @@ import React, { useEffect, useMemo, memo, useRef } from 'react'; // eslint-disable-next-line import/no-unresolved import { diff } from 'deep-object-diff'; import { shallow } from 'zustand/shallow'; -import { isEmpty } from 'lodash'; +import { isEmpty, isEqual } from 'lodash'; import { useEvents } from '@/AppBuilder/_stores/slices/eventsSlice'; import useStore from '@/AppBuilder/_stores/store'; import useTableStore from './_stores/tableStore'; import TableContainer from './_components/TableContainer'; import { transformTableData } from './_utils/transformTableData'; +import { usePrevious } from '@dnd-kit/utilities'; export const Table = memo( ({ id, componentName, width, height, properties, styles, darkMode, fireEvent, setExposedVariables }) => { @@ -44,6 +45,7 @@ export const Table = memo( } = properties; const firstRowOfTable = !isEmpty(restOfProperties.data?.[0]) ? restOfProperties.data?.[0] : undefined; + const prevFirstRowOfTable = usePrevious(firstRowOfTable); // Get all app events. Needed for certain events like onBulkUpdate const allAppEvents = useEvents(); @@ -67,8 +69,8 @@ export const Table = memo( }, [id, actions, setTableActions]); useEffect(() => { - if (useDynamicColumn) shouldAutogenerateColumns.current = true; - }, [firstRowOfTable, useDynamicColumn, columnData]); + if (useDynamicColumn || !isEqual(prevFirstRowOfTable, firstRowOfTable)) shouldAutogenerateColumns.current = true; + }, [firstRowOfTable, useDynamicColumn, columnData, prevFirstRowOfTable]); // Set column details to the table store. This is responsible for auto-generating columns useEffect(() => {