Skip to content

Commit 065dc56

Browse files
committed
fix(tables): restore frozenColumns on delete-column undo/redo
1 parent 6d19730 commit 065dc56

3 files changed

Lines changed: 24 additions & 0 deletions

File tree

apps/sim/app/workspace/[workspaceId]/tables/[tableId]/components/table-grid/table-grid.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -490,6 +490,11 @@ export function TableGrid({
490490
setColumnWidths(widths)
491491
}
492492

493+
function handleFrozenColumnsChange(frozen: string[]) {
494+
setFrozenColumns(frozen)
495+
frozenColumnsRef.current = frozen
496+
}
497+
493498
const handleFreezeToggle = useCallback((columnName: string) => {
494499
const col = columnsRef.current.find((c) => c.name === columnName)
495500
const siblings: string[] = col?.workflowGroupId
@@ -533,6 +538,7 @@ export function TableGrid({
533538
onColumnOrderChange: handleColumnOrderChange,
534539
onColumnRename: handleColumnRename,
535540
onColumnWidthsChange: handleColumnWidthsChange,
541+
onFrozenColumnsChange: handleFrozenColumnsChange,
536542
getColumnWidths,
537543
})
538544
const undoRef = useRef(undo)
@@ -2820,6 +2826,7 @@ export function TableGrid({
28202826
.map((r) => ({ rowId: r.id, value: r.data[columnToDelete] }))
28212827
const previousWidth = columnWidthsRef.current[columnToDelete] ?? null
28222828
const orderSnapshot = currentOrder ? [...currentOrder] : null
2829+
const frozenSnapshot = [...frozenColumnsRef.current]
28232830

28242831
const onDeleted = () => {
28252832
deletedOriginalPositions.push(entry.position)
@@ -2833,6 +2840,7 @@ export function TableGrid({
28332840
cellData,
28342841
previousOrder: orderSnapshot,
28352842
previousWidth,
2843+
previousFrozenColumns: frozenSnapshot,
28362844
})
28372845

28382846
const { [columnToDelete]: _removedWidth, ...cleanedWidths } = columnWidthsRef.current

apps/sim/hooks/use-table-undo.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ interface UseTableUndoProps {
3131
onColumnOrderChange?: (order: string[]) => void
3232
onColumnRename?: (oldName: string, newName: string) => void
3333
onColumnWidthsChange?: (widths: Record<string, number>) => void
34+
onFrozenColumnsChange?: (frozen: string[]) => void
3435
getColumnWidths?: () => Record<string, number>
3536
}
3637

@@ -40,6 +41,7 @@ export function useTableUndo({
4041
onColumnOrderChange,
4142
onColumnRename,
4243
onColumnWidthsChange,
44+
onFrozenColumnsChange,
4345
getColumnWidths,
4446
}: UseTableUndoProps) {
4547
const push = useTableUndoStore((s) => s.push)
@@ -69,6 +71,8 @@ export function useTableUndo({
6971
onColumnRenameRef.current = onColumnRename
7072
const onColumnWidthsChangeRef = useRef(onColumnWidthsChange)
7173
onColumnWidthsChangeRef.current = onColumnWidthsChange
74+
const onFrozenColumnsChangeRef = useRef(onFrozenColumnsChange)
75+
onFrozenColumnsChangeRef.current = onFrozenColumnsChange
7276
const getColumnWidthsRef = useRef(getColumnWidths)
7377
getColumnWidthsRef.current = getColumnWidths
7478

@@ -273,6 +277,10 @@ export function useTableUndo({
273277
metadata.columnWidths = merged
274278
onColumnWidthsChangeRef.current?.(merged)
275279
}
280+
if (action.previousFrozenColumns !== null) {
281+
onFrozenColumnsChangeRef.current?.(action.previousFrozenColumns)
282+
metadata.frozenColumns = action.previousFrozenColumns
283+
}
276284
if (Object.keys(metadata).length > 0) {
277285
updateMetadataMutation.mutate(metadata)
278286
}
@@ -294,6 +302,13 @@ export function useTableUndo({
294302
metadata.columnWidths = rest
295303
onColumnWidthsChangeRef.current?.(rest)
296304
}
305+
if (action.previousFrozenColumns !== null) {
306+
const newFrozen = action.previousFrozenColumns.filter(
307+
(n) => n !== action.columnName
308+
)
309+
onFrozenColumnsChangeRef.current?.(newFrozen)
310+
metadata.frozenColumns = newFrozen
311+
}
297312
if (Object.keys(metadata).length > 0) {
298313
updateMetadataMutation.mutate(metadata)
299314
}

apps/sim/stores/table/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ export type TableUndoAction =
4444
cellData: Array<{ rowId: string; value: unknown }>
4545
previousOrder: string[] | null
4646
previousWidth: number | null
47+
previousFrozenColumns: string[] | null
4748
}
4849
| { type: 'rename-column'; oldName: string; newName: string }
4950
| {

0 commit comments

Comments
 (0)