From 70aa7a3955501a2a16a8da98996c11c42300e747 Mon Sep 17 00:00:00 2001 From: Igor Fedoronchuk Date: Tue, 13 Oct 2026 15:16:38 +0200 Subject: [PATCH] Add crisscross cell highlighting for index tables MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- .../javascripts/wigu/table_crisscross.js | 49 ++++++++++++++++++ .../stylesheets/wigu/active_admin_theme.scss | 15 +++++- img/crisscross-dark.png | Bin 0 -> 36256 bytes img/crisscross-light.png | Bin 0 -> 36310 bytes test/crisscross_screenshot.rb | 23 ++++++++ test/dummy/app/admin/table.rb | 29 +++++++++++ .../app/assets/javascripts/active_admin.js | 1 + 7 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 app/assets/javascripts/wigu/table_crisscross.js create mode 100644 img/crisscross-dark.png create mode 100644 img/crisscross-light.png create mode 100644 test/crisscross_screenshot.rb create mode 100644 test/dummy/app/admin/table.rb diff --git a/app/assets/javascripts/wigu/table_crisscross.js b/app/assets/javascripts/wigu/table_crisscross.js new file mode 100644 index 0000000..e885b4d --- /dev/null +++ b/app/assets/javascripts/wigu/table_crisscross.js @@ -0,0 +1,49 @@ +// Crisscross highlighting for ActiveAdmin index tables. Clicking a cell marks +// its whole row and column with class "selected", which the stylesheet paints +// with var(--aa-selected) — so the clicked cell sits at the centre of a +// highlighted cross, making it easy to trace a value to its row and column in a +// wide table. +// +// Uses jQuery, which ActiveAdmin loads before this file (its own +// checkbox-toggler is jQuery too); the rest of the theme JS is dependency-free, +// but this behaviour lives entirely in AA's jQuery-driven index table. +// +// AA's table-checkbox-toggler selects the row when a cell is clicked; we undo +// that (re-click the checkbox) so crisscross highlighting never leaves rows +// ticked for batch actions. +$(document).ready(function () { + var marker = 'selected'; + + // "Select all" clears every row marker left by AA's toggler. + $('table.index_table .toggle_all').click(function () { + $(this).closest('table').find('tr.' + marker).removeClass(marker); + }); + + // Clicking the row checkbox itself must not bubble into the cell handler. + $('table.index_table').find(':checkbox').click(function (e) { + e.stopPropagation(); + $(this).closest('tr.' + marker).removeClass(marker); + }); + + $('table.index_table').on('click', 'td', function (e) { + var tdIndex = e.currentTarget.cellIndex, + $cell = $(e.currentTarget), + $table = $cell.closest('table'), + $row = $cell.closest('tr'), + $columnTds = $table.find('td:nth-child(' + (tdIndex + 1) + ')'), + $rowTds = $row.find('td'); + + // AA ticks the row checkbox on a cell click; click it again to revert. + $row.find(':checkbox').click(); + + if (!$cell.hasClass('col-selectable')) { + $table.find('td.' + marker).removeClass(marker); + $table.find('td.selected-cell').removeClass('selected-cell'); + $columnTds.addClass(marker); + $rowTds.addClass(marker); + // Mark the clicked cell itself so the stylesheet can set it apart as the + // centre of the cross. + $cell.addClass('selected-cell'); + } + }); +}); diff --git a/app/assets/stylesheets/wigu/active_admin_theme.scss b/app/assets/stylesheets/wigu/active_admin_theme.scss index dd4761d..c0562e2 100644 --- a/app/assets/stylesheets/wigu/active_admin_theme.scss +++ b/app/assets/stylesheets/wigu/active_admin_theme.scss @@ -1774,11 +1774,22 @@ input[type='radio'] { // Selected cells: the zebra and hover rules above outrank ActiveAdmin's own // `tr.selected td` / `td.selected`, so without this a ticked row (batch // actions) or a click-highlighted row + column (crisscross) looks unselected. - // The :hover variants keep the selection visible under the pointer. + // The `tr >` in the td.selected selector is load-bearing: the even-stripe + // rule is `...tbody tr:nth-child(even) > td` (specificity 0,0,2,4); a plain + // `tbody td.selected` is only (0,0,2,3) and loses on even rows, breaking the + // cross every other row. Matching the `tr >` ties the specificity, so source + // order wins. The :hover variants keep the selection visible under the pointer. table.index_table tbody tr.selected > td, table.index_table tbody tr.selected:hover > td, - table.index_table tbody td.selected, + table.index_table tbody tr > td.selected, table.index_table tbody tr:hover > td.selected { background: var(--aa-selected); } + // The clicked cell sits at the centre of the cross; an accent outline marks + // it apart from the row/column tint without a competing fill (outset inward + // so it adds no layout shift). + table.index_table tbody tr > td.selected-cell { + outline: 2px solid var(--aa-accent); + outline-offset: -2px; + } // Plain content tables (e.g. the CDR show "Attempts" table) are striped by the // base CSS with light fills; map the odd/even rows onto the dark surfaces too. table tbody tr.odd > td, table tbody tr.odd > th { background-color: var(--aa-surface); } diff --git a/img/crisscross-dark.png b/img/crisscross-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..59312fd8c0323aef51a501e595785dcea7e09fd0 GIT binary patch literal 36256 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 "crisscross-light.png", "dark" => "crisscross-dark.png" }.each do |theme, file| + page.execute_script(%(document.documentElement.setAttribute('data-theme', '#{theme}'))) + sleep 0.3 + out = File.expand_path("../img/#{file}", __dir__) + page.driver.browser.screenshot(path: out, selector: ".panel") + puts "wrote #{out} (#{File.size(out)} bytes)" +end + +Capybara.reset_sessions! diff --git a/test/dummy/app/admin/table.rb b/test/dummy/app/admin/table.rb new file mode 100644 index 0000000..1ef7c62 --- /dev/null +++ b/test/dummy/app/admin/table.rb @@ -0,0 +1,29 @@ +# Demo page with a plain index table so the crisscross highlighting (wigu/ +# table_crisscross.js) can be exercised and screenshotted: clicking a cell marks +# its whole row and column with .selected, which the theme paints. +ActiveAdmin.register_page "Table" do + menu priority: 3 + + ROWS = [ + %w[101 Ada\ Lovelace ada@example.com UK Active], + %w[102 Alan\ Turing alan@example.com UK Active], + %w[103 Grace\ Hopper grace@example.com US Closed], + %w[104 Katherine\ Johnson katherine@example.com US Active], + %w[105 Edsger\ Dijkstra edsger@example.com NL Closed], + %w[106 Donald\ Knuth donald@example.com US Active] + ].freeze + + content do + panel "Crisscross highlighting (click a cell)" do + head = "IDNameEmail" \ + "CountryStatus" + body = ROWS.map do |r| + "" + r.map { |c| "#{ERB::Util.html_escape(c)}" }.join + "" + end.join + text_node( + (%() + head + "" + body + "
") + .html_safe + ) + end + end +end diff --git a/test/dummy/app/assets/javascripts/active_admin.js b/test/dummy/app/assets/javascripts/active_admin.js index 6780be4..742c047 100644 --- a/test/dummy/app/assets/javascripts/active_admin.js +++ b/test/dummy/app/assets/javascripts/active_admin.js @@ -1,3 +1,4 @@ //= require active_admin/base //= require wigu/server_clock //= require wigu/theme_toggle +//= require wigu/table_crisscross