Skip to content

Commit 5142a4d

Browse files
authored
fix: Freezing a tree table column crashes the panel (#1192)
Fixes #1136 Column is only freezable when the table is not a tree table. Reset `frozenColumns` on rollup change.
1 parent d8db9ca commit 5142a4d

3 files changed

Lines changed: 10 additions & 2 deletions

File tree

packages/iris-grid/src/IrisGrid.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3198,6 +3198,7 @@ export class IrisGrid extends Component<IrisGridProps, IrisGridState> {
31983198
this.setState({
31993199
rollupConfig,
32003200
movedColumns: [],
3201+
frozenColumns: [],
32013202
sorts: [],
32023203
reverseType: TableUtils.REVERSE_TYPE.NONE,
32033204
selectDistinctColumns: [],

packages/iris-grid/src/IrisGridTreeTableModel.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import memoize from 'memoize-one';
33
import { GridRange, ModelIndex } from '@deephaven/grid';
44
import { Column, TreeRow, TreeTable } from '@deephaven/jsapi-shim';
55
import { assertNotNull } from '@deephaven/utils';
6-
import { UIRow } from './CommonTypes';
6+
import { UIRow, ColumnName } from './CommonTypes';
77
import IrisGridTableModelTemplate from './IrisGridTableModelTemplate';
88

99
export interface UITreeRow extends UIRow {
@@ -182,6 +182,12 @@ class IrisGridTreeTableModel extends IrisGridTableModelTemplate<
182182
)
183183
)
184184
);
185+
186+
updateFrozenColumns(columns: ColumnName[]): void {
187+
if (columns.length > 0) {
188+
throw new Error('Cannot freeze columns on a tree table');
189+
}
190+
}
185191
}
186192

187193
export default IrisGridTreeTableModel;

packages/iris-grid/src/mousehandlers/IrisGridContextMenuHandler.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,8 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
236236
columnWidth => columnWidth === 0
237237
);
238238
const isColumnFreezable =
239-
model.getColumnHeaderParentGroup(modelIndex, 0) === undefined;
239+
model.getColumnHeaderParentGroup(modelIndex, 0) === undefined &&
240+
!(isExpandableGridModel(model) && model.hasExpandableRows);
240241
const isColumnFrozen = model.isColumnFrozen(modelIndex);
241242
actions.push({
242243
title: 'Hide Column',

0 commit comments

Comments
 (0)