@@ -176,19 +201,27 @@ export const ContentTable = (contentTableProps: ContentTableProps): React.ReactE
zIndex: insetColumns != null ? 2 : 1
}}
>
- {table.getHeaderGroups().map((headerGroup) => (
-
- {headerGroup.headers.map((header) => (
-
+
+ |
+ {columnItems.map((column) => {
+ const header = table.getLeafHeaders()[column.index];
+ return (
+
onHeaderClick(e, header)}>
{header.column.getIsSorted() && sortingIcons[header.column.getIsSorted() as SortDirection]}
{flexRender(header.column.columnDef.header, header.getContext())}
{header.id != selectId && header.id != expanderId && }
- ))}
-
- ))}
+ );
+ })}
+ |
+
{rowVirtualizer.getVirtualItems().map((virtualRow) => {
@@ -197,7 +230,11 @@ export const ContentTable = (contentTableProps: ContentTableProps): React.ReactE
onRowContextMenu(e, row)}
+ onContextMenu={async (e) => {
+ // await selection to ensure that the context menu detects that a row has been selected
+ await row.toggleSelected(true);
+ onRowContextMenu(e, row);
+ }}
style={{
height: `${calculateRowHeight(row, headCellHeight, cellHeight)}px`,
transform: `translateY(${virtualRow.start}px)`
@@ -206,21 +243,24 @@ export const ContentTable = (contentTableProps: ContentTableProps): React.ReactE
ref={rowVirtualizer.measureElement}
colors={colors}
>
- {row.getVisibleCells().map((cell) => {
+ |
+ {columnItems.map((column) => {
+ const cell = row.getVisibleCells()[column.index];
const clickable = isClickable(onSelect, cell.column.id, checkableRows);
return (
onSelectRow(event, row, table) : undefined}
clickable={clickable ? 1 : 0}
- sticky={stickyLeftColumns ? 1 : 0}
+ sticky={column.index < stickyLeftColumns ? 1 : 0}
colors={colors}
>
{flexRender(cell.column.columnDef.cell, cell.getContext())}
);
})}
+ |
{row.getIsExpanded() && row.original.inset?.length != 0 && (
;
+ table: Table;
viewId?: string;
columns?: ContentTableColumn[];
expandableRows?: boolean;
+ stickyLeftColumns?: number;
downloadToCsvFileName?: string;
}
const Panel = (props: PanelProps) => {
- const { checkableRows, panelElements, numberOfCheckedItems, numberOfItems, showRefresh, table, viewId, columns, downloadToCsvFileName, expandableRows = false } = props;
+ const {
+ checkableRows,
+ panelElements,
+ numberOfCheckedItems,
+ numberOfItems,
+ showRefresh,
+ table,
+ viewId,
+ columns,
+ expandableRows = false,
+ downloadToCsvFileName = null,
+ stickyLeftColumns
+ } = props;
const { navigationState, dispatchNavigation } = useContext(NavigationContext);
const {
operationState: { colors }
@@ -63,7 +76,7 @@ const Panel = (props: PanelProps) => {
return (
- {table &&
}
+
{selectedItemsText}
{showRefresh && (