You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The IBM Equal Access checker's table_headers_exists rule flagged the checkbox-select-all column in Formidable's admin list tables (Forms list, Entries list, etc., rendered via FrmListHelper::print_column_headers()) and the Import/Export page's Export table (classes/views/xml/import_form.php): the header cell for that column was a headerless <td>, even though the column's row cells are already <th scope="row">. A scope attribute on a <td> isn't recognized as a header by assistive tech.
What changed
The cb column header cell is now a real <th scope="col"> in both places.
FrmListHelper::display() adds role="presentation" to the <table> element when there are zero items (no <thead>/rows rendered), matching the existing has_min_items() gate that already suppressed the header row in that case.
Added SCSS overrides (_widefat.scss, _screen-tablet.scss) restating core's own td.check-column font-size/padding as a th.check-column rule scoped to table.widefat (shared by both tables), so switching the tag doesn't change the cell's visual size. Scoping to table.widefat rather than .wp-list-table matters: the Export table doesn't carry wp-list-table, so an earlier version of this fix left it exposed to the pre-existing .frm-white-body table.widefat th { font-size: var(--text-md) } rule — caught in self-review before this PR opened.
Markup/CSS only — no JS, no behavior change beyond the accessibility fix.
How verified
Two new PHPUnit tests render the real markup and assert the header cell is a <th scope="col">, not a <td>:
Confirmed red against the pre-fix markup, green after, against the real local PHPUnit rig. Full forms/entries/xml test groups pass with no regressions. Compiled css/frm_admin.css rebuilt from the SCSS via the project's own webpack css config.
Self-reviewed (correctness/security/reuse/simplification/efficiency/altitude lenses) before opening — the Export-table CSS gap above was caught and fixed in that pass.
…o#6694)
Three admin data tables had no <th>/scope identified: the list-table
checkbox header cell (a <td>, unlike its row cells which are already
<th scope="row">), the empty-state list table (no <thead> at all when
there are zero items), and the import/export form-selection table
(plain <td> header row).
A `scope` attribute on the checkbox header <td> isn't recognized as a
header, so it needed a real <th> - added matching CSS to keep that
cell's layout the same as WP core's own td.check-column styling.
… layout
FrmListHelper::print_column_headers() renders the checkbox column as a
<th> (accessibility fix), unlike core's own list tables which leave it a
<td>. Moves the check-column sizing override from _forms-list.scss (too
narrow a scope) to _widefat.scss so it applies table-wide, and adds the
missing tablet-breakpoint padding-top to match core's td.check-column at
that width.
Parked mid-flight: heartbeat's 1800s wall killed the session before this
could be verified against a live Cypress run or committed. Resuming here
only to land the working tree instead of leaving it stranded — visual/e2e
verification and PR still TODO next pickup.
Confirmed red against the pre-fix markup (<td id='cb'> on the Forms list,
<td class="column-cb check-column"> on the Export table) and green after,
against the real local PHPUnit rig. Also fixes a comment left pointing at
_forms-list.scss after the sizing override moved to _widefat.scss.
Plain string assertions instead of regex where no metacharacters are used,
and drop a redundant not-td assertion already implied by the preceding
positive th assertion on the same cell.
The compensating th.check-column override was scoped to .wp-list-table,
which the Export table's own <table class="widefat ..."> doesn't carry.
That left the pre-existing .frm-white-body table.widefat th rule
(font-size: var(--text-md)) unopposed on the Export table's newly-th cb
header cell -- the exact layout regression the override exists to prevent,
just missed on one of the two tables this fix touches. Rescoped to
table.widefat, which both tables share, instead of .wp-list-table, which
only the Forms list table has. Recompiled css/frm_admin.css from the SCSS
via the css-only webpack config (borrowed node_modules from an existing
scratch clone on the same sass/webpack versions, confirmed via
package.json diff).
We reviewed changes in e404085...d0b0582 on this pull request. Below is the summary for the review, and you can see the individual issues we found as inline review comments.
AI Review is run only on demand for your team. We're only showing results of static analysis review right now. To trigger AI Review, comment @deepsourcebot review on this thread.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What was broken
The IBM Equal Access checker's
table_headers_existsrule flagged the checkbox-select-all column in Formidable's admin list tables (Forms list, Entries list, etc., rendered viaFrmListHelper::print_column_headers()) and the Import/Export page's Export table (classes/views/xml/import_form.php): the header cell for that column was a headerless<td>, even though the column's row cells are already<th scope="row">. Ascopeattribute on a<td>isn't recognized as a header by assistive tech.What changed
<th scope="col">in both places.FrmListHelper::display()addsrole="presentation"to the<table>element when there are zero items (no<thead>/rows rendered), matching the existinghas_min_items()gate that already suppressed the header row in that case._widefat.scss,_screen-tablet.scss) restating core's owntd.check-columnfont-size/padding as ath.check-columnrule scoped totable.widefat(shared by both tables), so switching the tag doesn't change the cell's visual size. Scoping totable.widefatrather than.wp-list-tablematters: the Export table doesn't carrywp-list-table, so an earlier version of this fix left it exposed to the pre-existing.frm-white-body table.widefat th { font-size: var(--text-md) }rule — caught in self-review before this PR opened.Markup/CSS only — no JS, no behavior change beyond the accessibility fix.
How verified
Two new PHPUnit tests render the real markup and assert the header cell is a
<th scope="col">, not a<td>:tests/phpunit/forms/test_FrmFormsListHelper.php::test_checkbox_column_header_is_thtests/phpunit/xml/test_FrmXMLController.php::test_export_table_headers_are_thConfirmed red against the pre-fix markup, green after, against the real local PHPUnit rig. Full
forms/entries/xmltest groups pass with no regressions. Compiledcss/frm_admin.cssrebuilt from the SCSS via the project's own webpackcssconfig.Self-reviewed (correctness/security/reuse/simplification/efficiency/altitude lenses) before opening — the Export-table CSS gap above was caught and fixed in that pass.
Closes Strategy11/formidable-pro#6694
🤖 Generated with Claude Code