Skip to content

Add crisscross cell highlighting for index tables - #68

Merged
Fivell merged 1 commit into
masterfrom
feat/table-crisscross-js
Oct 13, 2026
Merged

Fivell merged 1 commit into
masterfrom
feat/table-crisscross-js

Conversation

@Fivell

@Fivell Fivell commented Oct 13, 2026

Copy link
Copy Markdown
Member

Crisscross cell highlighting for index tables

Clicking a cell in an ActiveAdmin index table highlights its whole row and column — the cells get class selected, which the theme already paints with var(--aa-selected) (added in #66). The clicked value sits at the centre of a highlighted cross, which makes it easy to trace a cell to its row and column in a wide table.

The CSS for td.selected landed in #66; this adds the small JS that drives it. The three apps using this theme each shipped their own near-identical copy of this script, so it moves into the theme alongside the server clock and theme toggle — the behaviour now lives with the CSS that styles it. It uses jQuery, which ActiveAdmin loads before the theme JS (AA's own checkbox-toggler is jQuery too).

A Table demo page was added to the dummy app, plus test/crisscross_screenshot.rb producing the shots below (cell grace@example.com clicked).

Light

Crisscross light

Dark

Crisscross dark

@Fivell
Fivell force-pushed the feat/table-crisscross-js branch from d2ca23d to d9d30e0 Compare October 13, 2026 13:21
Clicking a cell in an index table highlights its whole row and column (the
cells get class "selected"), so the clicked value sits at the centre of a
cross — handy for tracing a cell to its row and column in a wide table. The
clicked cell itself gets "selected-cell" and an accent outline so the origin
of the cross stands apart from the row/column tint.

The three apps that use this theme each shipped their own copy of this JS;
move it into the theme alongside the server clock and theme toggle so it
lives with the CSS that styles it. Uses jQuery, which ActiveAdmin loads
before the theme JS.

Also fixes the td.selected fill from #66: the even-stripe rule is
`...tbody tr:nth-child(even) > td` (specificity 0,0,2,4) while the selected
fill was `...tbody td.selected` (0,0,2,3), so the stripe won on every even
row and the cross came out dashed. Matching the `tr >` ties the specificity
and lets source order win, so the cross is solid on all rows.

Adds a Table demo page to the dummy app plus a screenshot task producing
img/crisscross-{light,dark}.png.
@Fivell
Fivell force-pushed the feat/table-crisscross-js branch from d9d30e0 to 70aa7a3 Compare October 13, 2026 13:30
@Fivell
Fivell merged commit 0040294 into master Oct 13, 2026
3 checks passed
Fivell added a commit that referenced this pull request Oct 13, 2026
Both landed in #67/#68 without README coverage. Crisscross is opt-in like the
clock and theme toggle (require/import wigu/table_crisscross); Trix is styled
automatically. Screenshots reuse the ones the PRs added.
@Fivell Fivell mentioned this pull request Oct 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant