diff --git a/src/common/ResponsiveTable.tsx b/src/common/ResponsiveTable.tsx index 2a4cf1a..b69589e 100644 --- a/src/common/ResponsiveTable.tsx +++ b/src/common/ResponsiveTable.tsx @@ -28,13 +28,12 @@ const useStyles = makeStyles((theme: Theme) => { marginTop: theme.spacing(-2), }, titleComp: { - padding: theme.spacing(1), - marginLeft: theme.spacing(-1) + padding: theme.spacing(1, 1, 0, 1.5), }, subtitleComp: { - padding: theme.spacing(1), - marginTop: theme.spacing(-2), - marginLeft: theme.spacing(-1), + padding: theme.spacing(0, 1, 0.5, 1.5), + display: "flex", + alignItems: "center", }, titleContainer: { border: "none", @@ -42,6 +41,8 @@ const useStyles = makeStyles((theme: Theme) => { searchContainer: { border: "none", textAlign: "right", + display: "flex", + alignItems: "center", }, mobileTitleBox: { margin: theme.spacing(1), @@ -118,8 +119,9 @@ function ResizableHeaderTitle(props: { : {}), }} > - - {column.title} {showOrderIcon(column)} + + {column.title} + {showOrderIcon(column)} ); @@ -491,9 +493,17 @@ export default function ResponsiveTable(props: Props) { const sortKey = column.sortKey ? column.sortKey : column.title.toLowerCase() if (sortKey === orderBy) { if (order === "asc") { - return + return ( + + + + ) } else { - return + return ( + + + + ) } } return null; @@ -536,15 +546,19 @@ export default function ResponsiveTable(props: Props) { const clampedWidth = Math.max(MIN_COLUMN_WIDTH, newWidthForIndex) const actualDelta = newWidths[index] - clampedWidth newWidths[index] = clampedWidth - newWidths.every((width, j) => { - if (j <= index || width === 0) return true - else if (newWidths[j] !== undefined) { - newWidths[j] = newWidths[j] + actualDelta - return false - } - }) + + if (actualDelta > 0) { + // Shrinking current column – give space to next column + newWidths[index + 1] = (newWidths[index + 1] ?? 0) + actualDelta + } else if (actualDelta < 0) { + // Growing current column – take from next column only what it can give + const nextWidth = newWidths[index + 1] ?? 0 + const availableFromNext = Math.max(0, nextWidth - MIN_COLUMN_WIDTH) + const takeFromNext = Math.min(-actualDelta, availableFromNext) + newWidths[index + 1] = nextWidth - takeFromNext + // If we couldn't take enough, the table grows (clampedWidth already applied) + } setRowWidths(newWidths) - } const MIN_COLUMN_WIDTH = 24; @@ -553,14 +567,17 @@ export default function ResponsiveTable(props: Props) { {(title || setSearchText) && ( - + - - {renderTitle()} - {renderSubtitle()} - + {renderTitle()} + {renderSubtitle()} - + {actions && actions}