Make WordPress Core

Opened 6 weeks ago

Closed 3 weeks ago

Last modified 3 weeks ago

#65743 closed defect (bug) (fixed)

Viewport related admin dashboard display issues.

Reported by: afragen Owned by: joedolson
Priority: high Milestone: 7.1
Component: General Version: 7.1
Severity: normal Keywords: has-screenshots has-patch has-test-info commit
Cc: Focuses: accessibility

Description

In WP7.1-beta3 this issue doesn't exist, in trunk it does. Both of these issues seem to be related to the viewport. I don't see them in a normal sized browser, but when you re-size the browser window to mobile size they appear. I first noticed this in mobile.

In the Plugins page, the background display of an active plugins is empty under the checkbox. The CSS is also messed up.

The WP_List_Table disclosure triangle is missing. You can easily see this on the All Posts page.

This has been initially reported in https://wordpress.org/support/topic/styling-error-in-latest-nightly/

It's easiest to see using https://playground.wordpress.net/?wp=trunk

Attachments (17)

screenshot_864.png (373.0 KB ) - added by afragen 6 weeks ago.
screenshot_865.png (252.5 KB ) - added by afragen 6 weeks ago.
screenshot_866.png (389.4 KB ) - added by afragen 6 weeks ago.
screenshot_867.png (275.5 KB ) - added by afragen 6 weeks ago.
screenshot_868.png (177.0 KB ) - added by afragen 6 weeks ago.
screenshot_869.png (190.7 KB ) - added by afragen 6 weeks ago.
65743-3-pr12737-posts-triangle-restored.jpg (27.4 KB ) - added by khokansardar 6 weeks ago.
After PR 12737: Posts list at 606px - disclosure triangle restored, toggle-row anchored to th.column-primary.
65743-4-pr12737-expanded-row-collapsed.jpg (35.5 KB ) - added by khokansardar 6 weeks ago.
After PR 12737: expanded row collapses - th.title 60px and every td 38px, crammed into the 2.5em first column.
65743-5-with-check-column-rule-expanded-correct.jpg (25.6 KB ) - added by khokansardar 6 weeks ago.
PR 12737 plus .wp-list-table .is-expanded td.check-column { display: table-cell !important; } - expanded row correct, all cells 544px, row height 968px to 213px.
65743-6-pr12737-plugins-still-broken.jpg (41.3 KB ) - added by khokansardar 6 weeks ago.
After PR 12737: Plugins screen still broken - th.plugin-title stays display:table-cell (169px) and the empty background under the checkbox remains.
65743-1-trunk-posts-no-disclosure-triangle.jpg (26.5 KB ) - added by khokansardar 6 weeks ago.
Before (trunk @ fd04681823 / r62868): Posts list at 606px viewport - disclosure triangle missing, toggle-row escapes the row.
65743-2-trunk-plugins-description-squeezed.jpg (30.2 KB ) - added by khokansardar 6 weeks ago.
Before (trunk): Plugins screen at 606px with an active plugin - description column squeezed to 69px, empty background under the checkbox.
BeforePatch.png (211.3 KB ) - added by mirmpro 6 weeks ago.
AfterPatch.png (264.4 KB ) - added by mirmpro 6 weeks ago.
Screenshot 2026-07-29 at 12-56-00.png (112.8 KB ) - added by habiburdev 6 weeks ago.
IMG_3084.PNG (243.5 KB ) - added by afragen 3 weeks ago.
IMG_3085.PNG (537.8 KB ) - added by afragen 3 weeks ago.

Change History (46)

#1 @joedolson
6 weeks ago

  • Milestone Awaiting Review7.1
  • Owner set to joedolson
  • Status newaccepted

This ticket was mentioned in PR #12737 on WordPress/wordpress-develop by @joedolson.


6 weeks ago
#3

  • Keywords has-patch added; needs-patch removed

Work in progress

Trac ticket: https://core.trac.wordpress.org/ticket/65743

## Use of AI Tools

This ticket was mentioned in Slack in #core by afragen. View the logs.


6 weeks ago

#5 @afragen
6 weeks ago

I’ll test PR and report back. Thanks Joe.

This ticket was mentioned in Slack in #accessibility by joedolson. View the logs.


6 weeks ago

#7 @afercia
6 weeks ago

  • Focuses accessibility added

@khokansardar
6 weeks ago

After PR 12737: Posts list at 606px - disclosure triangle restored, toggle-row anchored to th.column-primary.

@khokansardar
6 weeks ago

After PR 12737: expanded row collapses - th.title 60px and every td 38px, crammed into the 2.5em first column.

@khokansardar
6 weeks ago

PR 12737 plus .wp-list-table .is-expanded td.check-column { display: table-cell !important; } - expanded row correct, all cells 544px, row height 968px to 213px.

@khokansardar
6 weeks ago

After PR 12737: Plugins screen still broken - th.plugin-title stays display:table-cell (169px) and the empty background under the checkbox remains.

@khokansardar
6 weeks ago

Before (trunk @ fd04681823 / r62868): Posts list at 606px viewport - disclosure triangle missing, toggle-row escapes the row.

@khokansardar
6 weeks ago

Before (trunk): Plugins screen at 606px with an active plugin - description column squeezed to 69px, empty background under the checkbox.

#8 @khokansardar
6 weeks ago

Patch testing report

Patch / PR tested

Environment

WordPress: 7.1-beta3-62828-src
PHP: 8.2.18 (Docker)
MySQL: 8.0.36
OS: macOS 26.5.2
Browser: Chromium, mobile viewport 606px (below the 782px breakpoint)
Local wordpress-develop @ http://localhost:8889

Steps

  1. On trunk, resize the browser below 782px and open /wp-admin/edit.php.
  2. Confirm the disclosure triangle is missing; record the toggle button's offsetParent.
  3. Open /wp-admin/plugins.php with an active plugin; record cell geometry.
  4. Apply PR 12737, reload with the stylesheet cache busted, and repeat steps 1-3.
  5. Expand a row on Posts and on Comments; record each cell's display value and bounding rect.
  6. Open Quick Edit on Posts.
  7. Compare row-actions spacing on plugins.php and in the dashboard Activity widget.
  8. Re-run with each hunk applied in isolation, to attribute each behaviour to a specific rule.

Results

  • Disclosure triangle, Posts: pass - the toggle button's offsetParent moves from a DIV (rect 558,56, outside the row) to TH.column-primary (rect 545,415). Before: 65743-1-trunk-posts-no-disclosure-triangle.jpg After: 65743-3-pr12737-posts-triangle-restored.jpg
  • Disclosure triangle, Users and Comments: pass - the primary th is position:relative and the toggle is anchored in-row.
  • Quick Edit at mobile width: pass - the inline-edit row opens full width, no layout change.
  • Expanded row, Posts: fail - with both layout hunks applied, th.title collapses to 60px and every td to 38px, all crammed into the 2.5em first column. Isolating the hunks: trunk gives th.title 544px with 8px meta slivers; hunk 1 alone gives a readable 272px/272px split; hunks 1 and 2 together give the 38px collapse. So the patched expanded row is worse than trunk. See 65743-4-pr12737-expanded-row-collapsed.jpg
  • Expanded row, Comments: fail - same failure, th.comment 60px by 4149px.
  • Plugins screen, active plugin: fail - th.plugin-title stays display:table-cell (169px) while its sibling tds are display:block, so the row does not stack, and the empty background under the checkbox reported in this ticket remains (elementFromPoint over that strip returns TR.active, rgb(255,255,255)). The description column does widen from 69px to 358px, so the screen is improved but the reported symptom is not resolved. Before: 65743-2-trunk-plugins-description-squeezed.jpg After: 65743-6-pr12737-plugins-still-broken.jpg
  • Row-actions spacing: fail - on plugins.php .row-actions computes to display:block with gap:normal, so the flex gap does not compensate for the reduced padding.

Conclusion
PR #12737 correctly identifies the cause: [62838] moved the row header to the primary column and made the check column a td, so two mobile rules that still key off td no longer match the primary cell. Hunk 1 fixes the disclosure triangle and is right in effect, though ".wp-list-table th" is broader than needed - it drops the "tr:not(.inline-edit-row):not(.no-items)" scoping and the ":not(.check-column)" exclusion, and applies "width: auto !important" to every thead and tfoot th, overriding ".wp-list-table thead th.column-primary { width: 100% }". I could not produce a visible regression from that breadth on core screens, since fixed table layout takes column widths from the header row, but a selector scoped to the row header cell would be safer for custom list tables still rendering th.check-column.

Three things look like they should change before this lands:

  1. Hunk 2 is necessary but incomplete, and on its own it makes the expanded row worse than trunk. Because ".wp-list-table .is-expanded td:not(.hidden)" now also matches td.check-column, promoting the primary th to block leaves the row with no table-cell at all, so every block child is wrapped in a single anonymous cell that inherits the 2.5em first column. Adding ".wp-list-table .is-expanded td.check-column { display: table-cell !important; }" alongside hunk 2 restores the correct full-width stacked layout. Verified by applying each hunk separately: hunk 2 without this rule collapses every cell to 38px; this rule without hunk 2 yields a 272px two-column split; both together give full-width 544px cells, with the row height dropping from 968px to 213px. See 65743-5-with-check-column-rule-expanded-correct.jpg
  2. The Plugins screen is not fixed. "#wpbody-content .wp-list-table.plugins td { display: block; width: auto; padding: 10px 9px; }" needs to cover the th as well. Note that the plugins header row also needs checking, since forcing the title cell to block shifts the thead column distribution.
  3. Hunk 3 (row-actions padding "4px 16px 4px 0" to "4px 8px 4px 0") looks out of scope here, and the rationale does not seem to hold. The flex and gap rule is scoped to "body:not(.plugins-php)", and on plugins.php .row-actions is display:block with no gap, so this halves the only spacing between adjacent action links on that screen. The 16px was added in [7fdef4e629] for Activity widget alignment, years after the gap rule was introduced. This may be better as its own ticket.

Happy to retest once the branch is updated.


AI disclosure

AI assistance: Yes
Tool(s): Claude Code
Model(s): Claude Opus 5
Used for: Driving the local Docker environment, executing the test scenarios, collecting the measurements and screenshots above, and drafting this report. Reviewed by me before posting.

Last edited 6 weeks ago by khokansardar (previous) (diff)

#9 @khokansardar
6 weeks ago

  • Keywords has-test-info added

@mirmpro
6 weeks ago

@mirmpro
6 weeks ago

#10 @mirmpro
6 weeks ago

Test Report

Patch tested: https://patch-diff.githubusercontent.com/raw/WordPress/wordpress-develop/pull/12737.diff

Environment

  • WordPress: trunk
  • Subdirectory: No
  • PHP: 7.4.33
  • Server: PHP.wasm
  • Database: WP_SQLite_Driver (Server: 8.0.38 / Client: 3.51.0)
  • Browser: Chrome 150.0.0.0 (using Chrome Developer Tools Google Pixel 7 mobile emulator)
  • OS: macOS
  • Theme: Twenty Twenty-Five 1.5
  • MU Plugins: None activated
  • Plugins:
    • Test Reports 1.3.0

Steps taken

  1. Launched the WordPress trunk testing environment using the Playground PR URL for pull request.
  2. Opened Chrome Developer Tools, enabled device emulation, and selected Google Pixel 7 as the target mobile simulator.
  3. Navigated to Posts → All Posts and verified that the missing WP_List_Table disclosure triangle icon is successfully restored.
  4. Navigated to Plugins → Installed Plugins and checked the active plugin background/name display. Observed that while list tables are fixed, the plugin title styling still appears oversized on mobile viewports as reported in Trac #65743.
  • ✅ Patch is solving the problem partially

Expected result

  • Viewport-related display regressions on mobile screens (such as missing list table disclosure triangles and broken table row layouts) should be resolved.

Additional Notes

  • Pull request successfully restores the WP_List_Table disclosure triangles when tested on the Google Pixel 7 emulator profile. However, additional CSS polish may still be needed for the Plugins page layout where plugin titles appear disproportionately large.

Screenshots/Screencast with results

Support Content

#11 follow-up: @joedolson
6 weeks ago

@mirmpro @khokansardar Please note that one of the reasons for marking a PR as draft is because it's incomplete. So, while your work is appreciated, this was all already known. I suggest avoiding spending time testing draft PRs, as it's generally not the most productive use of time.

#12 in reply to: ↑ 11 @mirmpro
6 weeks ago

Replying to joedolson:

@mirmpro @khokansardar Please note that one of the reasons for marking a PR as draft is because it's incomplete. So, while your work is appreciated, this was all already known. I suggest avoiding spending time testing draft PRs, as it's generally not the most productive use of time.

Thank you very much. When I pulled the PR, it wasn't marked as a draft as far as I can recall. However, I could be wrong. Thank you for the reminder!

@joedolson commented on PR #12737:


6 weeks ago
#13

I'm confident there are still things missing here, but it's functional, and ready for review.

This switches the responsive layout to use flex. It will need some polish on padding; I'm somewhat of the opinion that losing the space to the left, under the checkbox, is actually a good thing, as it gives a bit more width for the additional text.

This ticket was mentioned in Slack in #accessibility by joedolson. View the logs.


6 weeks ago

#15 @habiburdev
6 weeks ago

I tested this issue on trunk using WordPress Playground at narrow/mobile viewports.

Testing Results

  • Environment: WordPress Trunk (via WordPress Playground)
  • Page: /wp-admin/plugins.php

Observations

  • Confirming that the issue is still reproducible on trunk.
  • On narrow screens/mobile viewports, the plugin list table column layout breaks down:
    • The plugin description text gets squished into an extremely narrow right-side column and overflows horizontally off the screen.
    • The text is clipped and hard to read instead of stacking vertically or wrapping properly.

(See attached screenshot)


@afragen commented on PR #12737:


6 weeks ago
#16

Reviewed in Playground. All issues seem resolved. I'm still getting used to the collapse of space under the checkbox, but I'm OK with it.

nazmulasif commented on PR #12737:


6 weeks ago
#17

*Patch Test Report*

Patch - https://patch-diff.githubusercontent.com/raw/WordPress/wordpress-develop/pull/12737.diff

I tested this issue on *trunk* using WordPress Playground across narrow/mobile viewports.

### Testing Results

  • *Environment:* WordPress Trunk (via WordPress Playground)
  • *Page:* Plugins

### Observations

  • *Status:* Confirmed reproducible on trunk.
  • *Issue:* On narrow screens/mobile viewports, the plugin list table column layout breaks down:
    • The plugin description text compresses into an extremely narrow right-hand column and overflows horizontally off-screen.
    • The text gets clipped and unreadable instead of stacking vertically or wrapping properly.

@afercia commented on PR #12737:


6 weeks ago
#18

Besides @sabernhardt's suggestion, I noticed only a few minor things that I'd consider _optional_ to fix. This PR solves the main issue and looks good. Personally, I'm OK with the removal of the space under the checkbox.

1
The plugin title font size looks slightly bigger on trunk (left) compared to 7.0 (right):

https://github.com/user-attachments/assets/e8685656-8cb8-448b-aeaf-37110463166e

2
In the post panel, the spacing between the row actions links is slightly different:

https://github.com/user-attachments/assets/61afc043-4734-4244-af5b-52a03e8cfb4b

3

The checkbox of the active plugins is no longer horizontally aligned with the other checkboxes:

https://github.com/user-attachments/assets/6135d3e3-6240-4e2f-b5a1-a7ff34d132f0

4

Pre-existing issue, can be reproduced on 7.0 too: in the Plugins table, the padding of the cell for the checkbox in the table header is different compared to the one for the Posts table. This impacts the alignment of the checkbox with the th text 'Plugin':

https://github.com/user-attachments/assets/d8b0038f-460b-4538-b123-e4076519b93d

#19 @afercia
6 weeks ago

The linked PR looks good to me. I left only a few minor comments.

#20 @joedolson
6 weeks ago

#65763 was marked as a duplicate.

@joedolson commented on PR #12737:


6 weeks ago
#21

Updated all of the items noted by @sabernhardt and @afercia; also identified an issue with excerpt view and supporting plugins that insert table cells between check-column and column-primary and fixed those. Reverted the change to row actions, which isn't really related to this, and I think requires further consideration.

@shailu25 commented on PR #12737:


6 weeks ago
#22

Active plugin row highlighting now render correctly at mobile viewport widths on both Plugins and All Posts pages.✅

Plugins List After Post List After

https://github.com/user-attachments/assets/02637acc-1569-48d0-bb11-4a10016ed59b| https://github.com/user-attachments/assets/04a443a5-3616-4e03-8089-d0852467dc6c|

#23 @joedolson
6 weeks ago

  • Keywords commit added

Marking for commit.

#24 @joedolson
6 weeks ago

  • Resolutionfixed
  • Status acceptedclosed

In 62958:

Administration: Fix list table mobile viewports.

Follow up to [62838]. The changes to move column headers to the post title column did not account for the responsive tables in mobile viewports.

Modernizes layout of responsive tables to use flex layout. Visual change expected, aligning the toggled hidden cells under the full row, including the checkbox, rather than only under the title column. Update several other styles to fix alignment changes caused by the th adjustment.

Developed in https://github.com/WordPress/wordpress-develop/pull/12737

Props afragen, khokansardar, mirmpro, habiburdev, sabernhardt, afercia, shailu25, joedolson.
Fixes #65743.

#25 @nazmulasif
6 weeks ago

@joedolson i missed the props though i participated in the ticket. Could you please check?

#26 @afragen
3 weeks ago

  • Resolution fixed
  • Status closedreopened

#27 @afragen
3 weeks ago

I was just checking this again and in sites running ng 7.1-RC3 and trunk are now broken again. The list table dropdown is present but opening it is problematic.

Also the same background issues are present in an active plugin in the plugin list view.

Mea culpa. My issue.

Last edited 3 weeks ago by afragen (previous) (diff)

@afragen
3 weeks ago

@afragen
3 weeks ago

#28 @afragen
3 weeks ago

The above site is running 7.1-RC3 on an iPhone 17. This doesn't show in playground.

Issue was specific to one of my plugins.

Last edited 3 weeks ago by afragen (previous) (diff)

#29 @afragen
3 weeks ago

  • Resolutionfixed
  • Status reopenedclosed
Note: See TracTickets for help on using tickets.