diff --git a/frontend/src/components/audit/SqlAuditWorkbench.css b/frontend/src/components/audit/SqlAuditWorkbench.css index d314eb07..4f213f28 100644 --- a/frontend/src/components/audit/SqlAuditWorkbench.css +++ b/frontend/src/components/audit/SqlAuditWorkbench.css @@ -170,6 +170,14 @@ padding-block: 9px; } +.gn-sql-audit-table-panel .ant-table-cell-fix-right { + background: var(--sql-audit-panel); +} + +.gn-sql-audit-workbench .gn-sql-audit-table-panel .ant-table-tbody > tr:hover > td { + background: color-mix(in srgb, var(--sql-audit-text) 4.5%, var(--sql-audit-panel)) !important; +} + .gn-sql-audit-table-row td { height: 44px; font-variant-numeric: tabular-nums; diff --git a/frontend/src/components/audit/SqlAuditWorkbench.test.tsx b/frontend/src/components/audit/SqlAuditWorkbench.test.tsx index 1a20bdbe..e47dee60 100644 --- a/frontend/src/components/audit/SqlAuditWorkbench.test.tsx +++ b/frontend/src/components/audit/SqlAuditWorkbench.test.tsx @@ -54,6 +54,17 @@ describe('SqlAuditWorkbench', () => { expect(styleSource).toMatch(/\.gn-sql-audit-table-panel\s*\{[\s\S]*?min-height:\s*280px;/); }); + it('keeps the fixed action column opaque while rows are hovered', () => { + const styleSource = readFileSync(new URL('./SqlAuditWorkbench.css', import.meta.url), 'utf8'); + + expect(styleSource).toMatch( + /\.gn-sql-audit-table-panel\s+\.ant-table-cell-fix-right[\s\S]*?background:\s*var\(--sql-audit-panel\)/, + ); + expect(styleSource).toMatch( + /\.gn-sql-audit-workbench\s+\.gn-sql-audit-table-panel[\s\S]*?tr:hover\s*>\s*td[\s\S]*?background:\s*color-mix\(in srgb, var\(--sql-audit-text\) 4\.5%, var\(--sql-audit-panel\)\)\s*!important/, + ); + }); + it('debounces only free-text search before querying SQLite', () => { const source = readFileSync(new URL('./SqlAuditWorkbench.tsx', import.meta.url), 'utf8');