From 68caf5592bbcfc76f5b3bff7d84419b155778bb4 Mon Sep 17 00:00:00 2001 From: rcourtman Date: Thu, 6 Nov 2025 21:36:30 +0000 Subject: [PATCH] Fix Proxmox dashboard table overflow on wide displays (related to #643) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removed 2xl: width overrides that caused the table to exceed container width. At ≥1536px viewport, the 2xl breakpoint expanded table columns to ~1528px total width while .pulse-shell container provides only ~1416px usable space, forcing Net In/Net Out columns off-screen and requiring horizontal scroll. Table now caps at xl: breakpoint widths (~1266px) which fit comfortably within the container at all viewport sizes. Net In/Net Out columns are now visible without scrolling on 1080p, 4K, and all wide displays. Changed files: - Dashboard.tsx: Remove 2xl: width classes from all table header columns - GuestRow.tsx: Remove 2xl: width classes from all table cell columns --- .../src/components/Dashboard/Dashboard.tsx | 22 +++++++++---------- .../src/components/Dashboard/GuestRow.tsx | 22 +++++++++---------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/frontend-modern/src/components/Dashboard/Dashboard.tsx b/frontend-modern/src/components/Dashboard/Dashboard.tsx index 7dfe7f7..94bf108 100644 --- a/frontend-modern/src/components/Dashboard/Dashboard.tsx +++ b/frontend-modern/src/components/Dashboard/Dashboard.tsx @@ -912,7 +912,7 @@ export function Dashboard(props: DashboardProps) { handleSort('name')} onKeyDown={(e) => e.key === 'Enter' && handleSort('name')} tabindex="0" @@ -922,63 +922,63 @@ export function Dashboard(props: DashboardProps) { Name {sortKey() === 'name' && (sortDirection() === 'asc' ? '▲' : '▼')} handleSort('type')} > Type {sortKey() === 'type' && (sortDirection() === 'asc' ? '▲' : '▼')} handleSort('vmid')} > VMID {sortKey() === 'vmid' && (sortDirection() === 'asc' ? '▲' : '▼')} handleSort('uptime')} > Uptime {sortKey() === 'uptime' && (sortDirection() === 'asc' ? '▲' : '▼')} handleSort('cpu')} > CPU {sortKey() === 'cpu' && (sortDirection() === 'asc' ? '▲' : '▼')} handleSort('memory')} > Memory {sortKey() === 'memory' && (sortDirection() === 'asc' ? '▲' : '▼')} handleSort('disk')} > Disk {sortKey() === 'disk' && (sortDirection() === 'asc' ? '▲' : '▼')} handleSort('diskRead')} > Disk Read{' '} {sortKey() === 'diskRead' && (sortDirection() === 'asc' ? '▲' : '▼')} handleSort('diskWrite')} > Disk Write{' '} {sortKey() === 'diskWrite' && (sortDirection() === 'asc' ? '▲' : '▼')} handleSort('networkIn')} > Net In {sortKey() === 'networkIn' && (sortDirection() === 'asc' ? '▲' : '▼')} handleSort('networkOut')} > Net Out{' '} diff --git a/frontend-modern/src/components/Dashboard/GuestRow.tsx b/frontend-modern/src/components/Dashboard/GuestRow.tsx index 3c76626..bea9cc1 100644 --- a/frontend-modern/src/components/Dashboard/GuestRow.tsx +++ b/frontend-modern/src/components/Dashboard/GuestRow.tsx @@ -398,7 +398,7 @@ export function GuestRow(props: GuestRowProps) { // Get first cell styling const firstCellClass = createMemo(() => { const base = - 'py-0.5 pr-2 whitespace-nowrap relative w-[160px] sm:w-[200px] lg:w-[240px] xl:w-[280px] 2xl:w-[340px]'; + 'py-0.5 pr-2 whitespace-nowrap relative w-[160px] sm:w-[200px] lg:w-[240px] xl:w-[280px]'; const indent = props.isGroupedView ? GROUPED_FIRST_CELL_INDENT : DEFAULT_FIRST_CELL_INDENT; return `${base} ${indent}`; }); @@ -534,7 +534,7 @@ export function GuestRow(props: GuestRowProps) { {/* Type */} - +
{/* VMID */} - + {props.guest.vmid} {/* Uptime */} @@ -565,7 +565,7 @@ export function GuestRow(props: GuestRowProps) { {/* CPU */} - + -}> {/* Memory */} - +
-}> {/* Disk – surface usage even if guest is currently stopped so users can see last reported values */} - + {/* Disk I/O */} - +
- +
{/* Network I/O */} - +
- +