From f47c63a9c31255ad6790f0b1a47b382c8bf49d74 Mon Sep 17 00:00:00 2001 From: arpitnath Date: Thu, 26 Oct 2023 19:17:57 +0530 Subject: [PATCH] fixes: table column resizes --- frontend/src/Editor/Components/Table/Table.jsx | 18 ++++++++++++++---- frontend/src/Editor/Container.jsx | 10 ++++++++-- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/frontend/src/Editor/Components/Table/Table.jsx b/frontend/src/Editor/Components/Table/Table.jsx index afddbb97f3..05a91f4521 100644 --- a/frontend/src/Editor/Components/Table/Table.jsx +++ b/frontend/src/Editor/Components/Table/Table.jsx @@ -51,6 +51,8 @@ import { ButtonSolid } from '@/_ui/AppButton/AppButton'; import SolidIcon from '@/_ui/Icon/SolidIcons'; import Skeleton, { SkeletonTheme } from 'react-loading-skeleton'; import { OverlayTriggerComponent } from './OverlayTriggerComponent'; +// eslint-disable-next-line import/no-unresolved +import { diff } from 'deep-object-diff'; // utilityForNestedNewRow function is used to construct nested object while adding or updating new row when '.' is present in column key for adding new row const utilityForNestedNewRow = (row) => { @@ -788,11 +790,19 @@ export function Table({ useEffect(() => { const newColumnSizes = { ...columnSizes, ...state.columnResizing.columnWidths }; - if (!state.columnResizing.isResizingColumn && !_.isEmpty(newColumnSizes)) { + + const isColumnSizeChanged = !_.isEmpty(diff(columnSizes, newColumnSizes)); + + if (isColumnSizeChanged && !state.columnResizing.isResizingColumn && !_.isEmpty(newColumnSizes)) { changeCanDrag(true); - paramUpdated(id, 'columnSizes', { - value: newColumnSizes, - }); + paramUpdated( + id, + 'columnSizes', + { + value: newColumnSizes, + }, + { componentDefinitionChanged: true } + ); } else { changeCanDrag(false); } diff --git a/frontend/src/Editor/Container.jsx b/frontend/src/Editor/Container.jsx index 1657779b08..501b6c923d 100644 --- a/frontend/src/Editor/Container.jsx +++ b/frontend/src/Editor/Container.jsx @@ -93,6 +93,7 @@ export const Container = ({ const [isContainerFocused, setContainerFocus] = useState(false); const [canvasHeight, setCanvasHeight] = useState(null); + const paramUpdatesOptsRef = useRef({}); const canvasRef = useRef(null); const focusedParentIdRef = useRef(undefined); useHotkeys('meta+z, control+z', () => handleUndo()); @@ -195,7 +196,9 @@ export const Container = ({ const componendAdded = Object.keys(newComponents).length > Object.keys(oldComponents).length; - const opts = { containerChanges: true }; + const opts = _.isEmpty(paramUpdatesOptsRef.current) ? { containerChanges: true } : paramUpdatesOptsRef.current; + + paramUpdatesOptsRef.current = {}; if (componendAdded) { opts.componentAdded = true; @@ -413,7 +416,7 @@ export const Container = ({ ); const paramUpdated = useCallback( - (id, param, value) => { + (id, param, value, opts = {}) => { if (Object.keys(value)?.length > 0) { setBoxes((boxes) => update(boxes, { @@ -433,6 +436,9 @@ export const Container = ({ }, }) ); + if (!_.isEmpty(opts)) { + paramUpdatesOptsRef.current = opts; + } } }, [boxes, setBoxes]