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 dc0604017f..6d6ca701ab 100644 --- a/src/renderer/components/item-object-list/item-list-layout.tsx +++ b/src/renderer/components/item-object-list/item-list-layout.tsx @@ -233,6 +233,13 @@ export class ItemListLayout extends React.Component { if (!item) return; const itemId = item.getId(); + const customProps = customizeTableRowProps ? customizeTableRowProps(item) : {}; + + // make sure a disabled item is not in the selected state + if (customProps.disabled) { + store.unselect(item); + } + return ( { sortItem={item} selected={detailsItem && detailsItem.getId() === itemId} onClick={hasDetailsView ? prevDefault(() => onDetails(item)) : undefined} - {...(customizeTableRowProps ? customizeTableRowProps(item) : {})} + {...customProps} > {isSelectable && ( { } renderTableHeader() { - const { renderTableHeader, isSelectable, isConfigurable, store } = this.props; + const { customizeTableRowProps, renderTableHeader, isSelectable, isConfigurable, store } = this.props; if (!renderTableHeader) { return; } + let items = this.items; + if ( customizeTableRowProps ) { + items = items.filter((item) => !customizeTableRowProps(item).disabled); + } + return ( {isSelectable && ( store.toggleSelectionAll(this.items))} + isChecked={store.isSelectedAll(items)} + onClick={prevDefault(() => store.toggleSelectionAll(items))} /> )} {renderTableHeader.map((cellProps, index) => {