diff --git a/src/renderer/components/item-object-list/content.tsx b/src/renderer/components/item-object-list/content.tsx index 69f72cffb7..eb7b5dedb2 100644 --- a/src/renderer/components/item-object-list/content.tsx +++ b/src/renderer/components/item-object-list/content.tsx @@ -68,67 +68,76 @@ export class ItemListLayoutContent extends React.Component return this.props.store.failedLoading; } + @boundMethod + renderRow(item: I) { + return this.getTableRow(item); + } + + getTableRow(item: I) { + const { + isSelectable, renderTableHeader, renderTableContents, renderItemMenu, + store, hasDetailsView, onDetails, + copyClassNameFromHeadCells, customizeTableRowProps, detailsItem, + } = this.props; + const { isSelected } = store; + + return ( + onDetails(item)) : undefined} + {...customizeTableRowProps(item)} + > + {isSelectable && ( + store.toggleSelection(item))} + /> + )} + {renderTableContents(item).map((content, index) => { + const cellProps: TableCellProps = isReactNode(content) + ? { children: content } + : content; + const headCell = renderTableHeader?.[index]; + + if (copyClassNameFromHeadCells && headCell) { + cellProps.className = cssNames( + cellProps.className, + headCell.className, + ); + } + + if (!headCell || this.showColumn(headCell)) { + return ; + } + + return null; + })} + {renderItemMenu && ( + +
+ {renderItemMenu(item, store)} +
+
+ )} +
+ ); + } + @boundMethod getRow(uid: string) { return (
{() => { - const { - isSelectable, renderTableHeader, renderTableContents, renderItemMenu, - store, hasDetailsView, onDetails, - copyClassNameFromHeadCells, customizeTableRowProps, detailsItem, - } = this.props; - const { isSelected } = store; - const item = this.props.getItems().find(item => item.getId() == uid); + const item = this.props.getItems().find(item => item.getId() === uid); if (!item) return null; - const itemId = item.getId(); - return ( - onDetails(item)) : undefined} - {...customizeTableRowProps(item)} - > - {isSelectable && ( - store.toggleSelection(item))} - /> - )} - {renderTableContents(item).map((content, index) => { - const cellProps: TableCellProps = isReactNode(content) - ? { children: content } - : content; - const headCell = renderTableHeader?.[index]; - - if (copyClassNameFromHeadCells && headCell) { - cellProps.className = cssNames( - cellProps.className, - headCell.className, - ); - } - - if (!headCell || this.showColumn(headCell)) { - return ; - } - - return null; - })} - {renderItemMenu && ( - -
- {renderItemMenu(item, store)} -
-
- )} -
- ); + return this.getTableRow(item); }}
@@ -248,6 +257,7 @@ export class ItemListLayoutContent extends React.Component selectable={hasDetailsView} sortable={sortingCallbacks} getTableRow={this.getRow} + renderRow={virtual ? undefined : this.renderRow} items={items} selectedItemId={selectedItemId} noItems={this.renderNoItems()}