diff --git a/src/renderer/components/item-object-list/item-list-layout.tsx b/src/renderer/components/item-object-list/item-list-layout.tsx index cedaa1fde9..d52ec9e9ab 100644 --- a/src/renderer/components/item-object-list/item-list-layout.tsx +++ b/src/renderer/components/item-object-list/item-list-layout.tsx @@ -2,7 +2,7 @@ import "./item-list-layout.scss"; import groupBy from "lodash/groupBy"; import React, { ReactNode } from "react"; -import { computed } from "mobx"; +import { computed, observable } from "mobx"; import { disposeOnUnmount, observer } from "mobx-react"; import { ConfirmDialog, ConfirmDialogParams } from "../confirm-dialog"; import { Table, TableCell, TableCellProps, TableHead, TableProps, TableRow, TableRowProps, TableSortCallback } from "../table"; @@ -80,10 +80,6 @@ export interface ItemListLayoutProps { renderFooter?: (parent: ItemListLayout) => React.ReactNode; } -interface ItemListLayoutState { - cellSizes: number[]; -} - const defaultProps: Partial = { showHeader: true, isSearchable: true, @@ -100,7 +96,7 @@ const defaultProps: Partial = { }; @observer -export class ItemListLayout extends React.Component { +export class ItemListLayout extends React.Component { static defaultProps = defaultProps as object; private storage = createStorage("item_list_layout", { @@ -115,12 +111,13 @@ export class ItemListLayout extends React.Component(props.renderTableHeader.length) - }; + // create a registry to remember column sizes + this.cellSizes = new Array(props.renderTableHeader.length); } async componentDidMount() { @@ -222,10 +219,7 @@ export class ItemListLayout extends React.Component { const cellProps: TableCellProps = isReactNode(content) ? { children: content } : content; const headCell = renderTableHeader?.[index]; - const cellSize = this.state.cellSizes[index]; + const cellSize = this.cellSizes[index]; if (copyClassNameFromHeadCells && headCell) { cellProps.className = cssNames(cellProps.className, headCell.className); @@ -428,7 +422,7 @@ export class ItemListLayout extends React.Component )} {renderTableHeader.map((cellProps, index) => { - const cellSize = this.state.cellSizes[index]; + const cellSize = this.cellSizes[index]; const _cellProps = resizable ? { ...cellProps, _onResize: (width: number) => this.handleCellResize(index, width), resizable } : cellProps;