fix(ui): scope table-row hover to interactive rows only (MAPPS-389) #451

Merged
longjacksonle merged 1 commit from fix/MAPPS-389-scope-row-hover into main 2026-07-30 17:54:54 +02:00

MAPPS-389: hover reaction fires over non-interactive rows/whitespace

Vas observed a hover reaction firing while the cursor was not over any interactive element on the time-log screen ("the entire page reacting").

Root cause

Not a page-level container. MAPPS-263 made the shared TableRow apply hover:bg-surface-2 to EVERY row, including non-clickable ones. A non-interactive row (or the whitespace in a row with sparse cells) then lit up on hover. The full-width empty/loading rows made this read as the whole table/page reacting. (I audited every hover: in the app: all others are on genuinely interactive elements - buttons, links, tiles, sidebar items. This was the only broadly-scoped one.)

Fix

Scope the hover + pointer affordance to clickable rows in TableRow. Non-clickable rows now render with no hover class, so the cursor over non-interactive rows / whitespace no longer lights up. Clickable rows (list rows that open a detail/modal) keep their hover exactly as before. This generalizes the MAPPS-388 empty-row fix to every non-interactive row.

Tests

Added a render regression test (via the existing dioxus-ssr harness): a clickable row keeps hover:bg-surface-2; a plain row carries no hover: class.

cargo fmt --all --check, cargo clippy --all-targets -- -D warnings, cargo check --target wasm32-unknown-unknown, and cargo test --lib (232 passed) all green on 1.94.1.

Acceptance criteria

  • Hover scoped to interactive elements (clickable rows / cards / buttons keep it).
  • Hover removed from non-interactive rows (the broadly-scoped TableRow case).
  • No hover feedback over non-interactive whitespace.
  • Regression test covering clickable vs non-clickable row hover.
## MAPPS-389: hover reaction fires over non-interactive rows/whitespace Vas observed a hover reaction firing while the cursor was not over any interactive element on the time-log screen ("the entire page reacting"). ### Root cause Not a page-level container. `MAPPS-263` made the shared `TableRow` apply `hover:bg-surface-2` to EVERY row, including non-clickable ones. A non-interactive row (or the whitespace in a row with sparse cells) then lit up on hover. The full-width empty/loading rows made this read as the whole table/page reacting. (I audited every `hover:` in the app: all others are on genuinely interactive elements - buttons, links, tiles, sidebar items. This was the only broadly-scoped one.) ### Fix Scope the hover + pointer affordance to `clickable` rows in `TableRow`. Non-clickable rows now render with no hover class, so the cursor over non-interactive rows / whitespace no longer lights up. Clickable rows (list rows that open a detail/modal) keep their hover exactly as before. This generalizes the MAPPS-388 empty-row fix to every non-interactive row. ### Tests Added a render regression test (via the existing `dioxus-ssr` harness): a clickable row keeps `hover:bg-surface-2`; a plain row carries no `hover:` class. `cargo fmt --all --check`, `cargo clippy --all-targets -- -D warnings`, `cargo check --target wasm32-unknown-unknown`, and `cargo test --lib` (232 passed) all green on 1.94.1. ### Acceptance criteria - [x] Hover scoped to interactive elements (clickable rows / cards / buttons keep it). - [x] Hover removed from non-interactive rows (the broadly-scoped `TableRow` case). - [x] No hover feedback over non-interactive whitespace. - [x] Regression test covering clickable vs non-clickable row hover.
fix(ui): scope table-row hover to interactive rows only (MAPPS-389)
All checks were successful
Check / fmt + clippy + tests (pull_request) Successful in 1m31s
Create release / Create release from merged PR (pull_request) Has been skipped
2120018ef9
MAPPS-263 gave every `TableRow` a hover background, including non-clickable rows, so the cursor over a non-interactive row (or the whitespace in its sparse cells) lit up - Vas reported it as the page reacting to hover over dead space, most visibly on the time-log screen. Restrict the hover + `transition-colors` affordance to clickable rows; non-clickable rows now render with no hover class. This generalizes the MAPPS-388 empty-row fix to every non-interactive row.

Add a render regression test (via the dioxus-ssr harness) asserting a clickable row keeps `hover:bg-surface-2` while a plain row carries no hover class.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QvB249F2SV9SBe3cBKRjcS
longjacksonle scheduled this pull request to auto merge when all checks succeed 2026-07-30 17:54:15 +02:00
longjacksonle deleted branch fix/MAPPS-389-scope-row-hover 2026-07-30 17:54:54 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/mokosh-apps!451
No description provided.