Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Data Views list layout: revise for improved text truncation #65376

Merged
merged 10 commits into from
Oct 14, 2024

Conversation

stokesman
Copy link
Contributor

@stokesman stokesman commented Sep 16, 2024

What?

A revision of markup and style.

Why?

To fix #65215.

The list layout design is tricky to implement—particularly, its hover/focus/selected states. The current layout trick relies on an opaque layer to further "truncate" the title text while hovered/selected/focused. Right now, there doesn’t seem to be a way to avoid the hardcoded colors while retaining the current layout trick.

The approach in this PR avoids hardcoded colors. Besides that, I think it’s nicer that the ellipsis remain visible in all states.

How?

Makes the actions (__item-actions) a sibling of the title (__primary_field) so when the latter appears, the former truncates as much as needed. This is permitted by making the item’s primary button absolutely positioned and moving its contents out to avoid buttons or other gridcell roles from nesting.

Testing Instructions

Inspect/scrutinize all interactions with the list view in all contexts (viewing templates/pages/patterns) and with all "View options" combinations of available properties visible/hidden

Testing Instructions for Keyboard

Screenshots or screencast

Before After
list-layout-before list-layout-after

Overlaid before and after to verify preserved metrics

before-after-overlay.mov

@stokesman stokesman added [Type] Bug An existing feature does not function as intended [Feature] DataViews Work surrounding upgrading and evolving views in the site editor and beyond labels Sep 16, 2024
Copy link

github-actions bot commented Sep 16, 2024

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Co-authored-by: colorful-tones <[email protected]>
Co-authored-by: stokesman <[email protected]>
Co-authored-by: ciampo <[email protected]>
Co-authored-by: afercia <[email protected]>
Co-authored-by: kevin940726 <[email protected]>
Co-authored-by: aaronrobertshaw <[email protected]>
Co-authored-by: jameskoster <[email protected]>
Co-authored-by: ndiego <[email protected]>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

Copy link

github-actions bot commented Sep 16, 2024

Size Change: -106 B (-0.01%)

Total Size: 1.77 MB

Filename Size Change
build/edit-site/index.min.js 218 kB +27 B (+0.01%)
build/edit-site/posts-rtl.css 7.32 kB -32 B (-0.44%)
build/edit-site/posts.css 7.32 kB -33 B (-0.45%)
build/edit-site/style-rtl.css 12.6 kB -33 B (-0.26%)
build/edit-site/style.css 12.6 kB -35 B (-0.28%)
ℹ️ View Unchanged
Filename Size
build-module/a11y/index.min.js 482 B
build-module/block-library/file/view.min.js 447 B
build-module/block-library/image/view.min.js 1.78 kB
build-module/block-library/navigation/view.min.js 1.16 kB
build-module/block-library/query/view.min.js 743 B
build-module/block-library/search/view.min.js 616 B
build-module/interactivity-router/index.min.js 3.04 kB
build-module/interactivity/debug.min.js 16.7 kB
build-module/interactivity/index.min.js 13.4 kB
build/a11y/index.min.js 952 B
build/annotations/index.min.js 2.26 kB
build/api-fetch/index.min.js 2.32 kB
build/autop/index.min.js 2.12 kB
build/blob/index.min.js 579 B
build/block-directory/index.min.js 7.26 kB
build/block-directory/style-rtl.css 1.07 kB
build/block-directory/style.css 1.07 kB
build/block-editor/content-rtl.css 4.45 kB
build/block-editor/content.css 4.45 kB
build/block-editor/default-editor-styles-rtl.css 394 B
build/block-editor/default-editor-styles.css 394 B
build/block-editor/index.min.js 256 kB
build/block-editor/style-rtl.css 15.3 kB
build/block-editor/style.css 15.3 kB
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 90 B
build/block-library/blocks/archives/style.css 90 B
build/block-library/blocks/audio/editor-rtl.css 149 B
build/block-library/blocks/audio/editor.css 151 B
build/block-library/blocks/audio/style-rtl.css 132 B
build/block-library/blocks/audio/style.css 132 B
build/block-library/blocks/audio/theme-rtl.css 134 B
build/block-library/blocks/audio/theme.css 134 B
build/block-library/blocks/avatar/editor-rtl.css 115 B
build/block-library/blocks/avatar/editor.css 115 B
build/block-library/blocks/avatar/style-rtl.css 104 B
build/block-library/blocks/avatar/style.css 104 B
build/block-library/blocks/button/editor-rtl.css 265 B
build/block-library/blocks/button/editor.css 265 B
build/block-library/blocks/button/style-rtl.css 538 B
build/block-library/blocks/button/style.css 538 B
build/block-library/blocks/buttons/editor-rtl.css 291 B
build/block-library/blocks/buttons/editor.css 291 B
build/block-library/blocks/buttons/style-rtl.css 345 B
build/block-library/blocks/buttons/style.css 345 B
build/block-library/blocks/calendar/style-rtl.css 240 B
build/block-library/blocks/calendar/style.css 240 B
build/block-library/blocks/categories/editor-rtl.css 132 B
build/block-library/blocks/categories/editor.css 131 B
build/block-library/blocks/categories/style-rtl.css 152 B
build/block-library/blocks/categories/style.css 152 B
build/block-library/blocks/code/editor-rtl.css 53 B
build/block-library/blocks/code/editor.css 53 B
build/block-library/blocks/code/style-rtl.css 121 B
build/block-library/blocks/code/style.css 121 B
build/block-library/blocks/code/theme-rtl.css 122 B
build/block-library/blocks/code/theme.css 122 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 420 B
build/block-library/blocks/columns/style.css 420 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 124 B
build/block-library/blocks/comment-author-avatar/editor.css 124 B
build/block-library/blocks/comment-author-name/style-rtl.css 72 B
build/block-library/blocks/comment-author-name/style.css 72 B
build/block-library/blocks/comment-content/style-rtl.css 120 B
build/block-library/blocks/comment-content/style.css 120 B
build/block-library/blocks/comment-date/style-rtl.css 65 B
build/block-library/blocks/comment-date/style.css 65 B
build/block-library/blocks/comment-edit-link/style-rtl.css 70 B
build/block-library/blocks/comment-edit-link/style.css 70 B
build/block-library/blocks/comment-reply-link/style-rtl.css 71 B
build/block-library/blocks/comment-reply-link/style.css 71 B
build/block-library/blocks/comment-template/style-rtl.css 200 B
build/block-library/blocks/comment-template/style.css 199 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 228 B
build/block-library/blocks/comments-pagination/editor.css 217 B
build/block-library/blocks/comments-pagination/style-rtl.css 234 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/comments/editor-rtl.css 832 B
build/block-library/blocks/comments/editor.css 832 B
build/block-library/blocks/comments/style-rtl.css 632 B
build/block-library/blocks/comments/style.css 631 B
build/block-library/blocks/cover/editor-rtl.css 641 B
build/block-library/blocks/cover/editor.css 642 B
build/block-library/blocks/cover/style-rtl.css 1.62 kB
build/block-library/blocks/cover/style.css 1.6 kB
build/block-library/blocks/details/editor-rtl.css 65 B
build/block-library/blocks/details/editor.css 65 B
build/block-library/blocks/details/style-rtl.css 86 B
build/block-library/blocks/details/style.css 86 B
build/block-library/blocks/embed/editor-rtl.css 331 B
build/block-library/blocks/embed/editor.css 331 B
build/block-library/blocks/embed/style-rtl.css 419 B
build/block-library/blocks/embed/style.css 419 B
build/block-library/blocks/embed/theme-rtl.css 133 B
build/block-library/blocks/embed/theme.css 133 B
build/block-library/blocks/file/editor-rtl.css 326 B
build/block-library/blocks/file/editor.css 326 B
build/block-library/blocks/file/style-rtl.css 278 B
build/block-library/blocks/file/style.css 279 B
build/block-library/blocks/file/view.min.js 324 B
build/block-library/blocks/footnotes/style-rtl.css 198 B
build/block-library/blocks/footnotes/style.css 197 B
build/block-library/blocks/form-input/editor-rtl.css 229 B
build/block-library/blocks/form-input/editor.css 229 B
build/block-library/blocks/form-input/style-rtl.css 357 B
build/block-library/blocks/form-input/style.css 357 B
build/block-library/blocks/form-submission-notification/editor-rtl.css 344 B
build/block-library/blocks/form-submission-notification/editor.css 341 B
build/block-library/blocks/form-submit-button/style-rtl.css 69 B
build/block-library/blocks/form-submit-button/style.css 69 B
build/block-library/blocks/form/view.min.js 470 B
build/block-library/blocks/freeform/editor-rtl.css 2.6 kB
build/block-library/blocks/freeform/editor.css 2.6 kB
build/block-library/blocks/gallery/editor-rtl.css 946 B
build/block-library/blocks/gallery/editor.css 951 B
build/block-library/blocks/gallery/style-rtl.css 1.83 kB
build/block-library/blocks/gallery/style.css 1.82 kB
build/block-library/blocks/gallery/theme-rtl.css 108 B
build/block-library/blocks/gallery/theme.css 108 B
build/block-library/blocks/group/editor-rtl.css 334 B
build/block-library/blocks/group/editor.css 334 B
build/block-library/blocks/group/style-rtl.css 103 B
build/block-library/blocks/group/style.css 103 B
build/block-library/blocks/group/theme-rtl.css 79 B
build/block-library/blocks/group/theme.css 79 B
build/block-library/blocks/heading/style-rtl.css 188 B
build/block-library/blocks/heading/style.css 188 B
build/block-library/blocks/html/editor-rtl.css 346 B
build/block-library/blocks/html/editor.css 347 B
build/block-library/blocks/image/editor-rtl.css 785 B
build/block-library/blocks/image/editor.css 787 B
build/block-library/blocks/image/style-rtl.css 1.59 kB
build/block-library/blocks/image/style.css 1.59 kB
build/block-library/blocks/image/theme-rtl.css 137 B
build/block-library/blocks/image/theme.css 137 B
build/block-library/blocks/image/view.min.js 1.65 kB
build/block-library/blocks/latest-comments/style-rtl.css 355 B
build/block-library/blocks/latest-comments/style.css 354 B
build/block-library/blocks/latest-posts/editor-rtl.css 179 B
build/block-library/blocks/latest-posts/editor.css 179 B
build/block-library/blocks/latest-posts/style-rtl.css 509 B
build/block-library/blocks/latest-posts/style.css 510 B
build/block-library/blocks/list/style-rtl.css 107 B
build/block-library/blocks/list/style.css 107 B
build/block-library/blocks/loginout/style-rtl.css 61 B
build/block-library/blocks/loginout/style.css 61 B
build/block-library/blocks/media-text/editor-rtl.css 321 B
build/block-library/blocks/media-text/editor.css 320 B
build/block-library/blocks/media-text/style-rtl.css 558 B
build/block-library/blocks/media-text/style.css 556 B
build/block-library/blocks/more/editor-rtl.css 427 B
build/block-library/blocks/more/editor.css 427 B
build/block-library/blocks/navigation-link/editor-rtl.css 644 B
build/block-library/blocks/navigation-link/editor.css 645 B
build/block-library/blocks/navigation-link/style-rtl.css 192 B
build/block-library/blocks/navigation-link/style.css 191 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 295 B
build/block-library/blocks/navigation-submenu/editor.css 294 B
build/block-library/blocks/navigation/editor-rtl.css 2.19 kB
build/block-library/blocks/navigation/editor.css 2.2 kB
build/block-library/blocks/navigation/style-rtl.css 2.25 kB
build/block-library/blocks/navigation/style.css 2.23 kB
build/block-library/blocks/navigation/view.min.js 1.03 kB
build/block-library/blocks/nextpage/editor-rtl.css 392 B
build/block-library/blocks/nextpage/editor.css 392 B
build/block-library/blocks/page-list/editor-rtl.css 378 B
build/block-library/blocks/page-list/editor.css 378 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 236 B
build/block-library/blocks/paragraph/editor.css 236 B
build/block-library/blocks/paragraph/style-rtl.css 341 B
build/block-library/blocks/paragraph/style.css 340 B
build/block-library/blocks/post-author-biography/style-rtl.css 74 B
build/block-library/blocks/post-author-biography/style.css 74 B
build/block-library/blocks/post-author-name/style-rtl.css 69 B
build/block-library/blocks/post-author-name/style.css 69 B
build/block-library/blocks/post-author/editor-rtl.css 107 B
build/block-library/blocks/post-author/editor.css 107 B
build/block-library/blocks/post-author/style-rtl.css 188 B
build/block-library/blocks/post-author/style.css 189 B
build/block-library/blocks/post-comments-form/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-comments-form/style-rtl.css 527 B
build/block-library/blocks/post-comments-form/style.css 528 B
build/block-library/blocks/post-content/style-rtl.css 61 B
build/block-library/blocks/post-content/style.css 61 B
build/block-library/blocks/post-date/style-rtl.css 62 B
build/block-library/blocks/post-date/style.css 62 B
build/block-library/blocks/post-excerpt/editor-rtl.css 71 B
build/block-library/blocks/post-excerpt/editor.css 71 B
build/block-library/blocks/post-excerpt/style-rtl.css 155 B
build/block-library/blocks/post-excerpt/style.css 155 B
build/block-library/blocks/post-featured-image/editor-rtl.css 729 B
build/block-library/blocks/post-featured-image/editor.css 726 B
build/block-library/blocks/post-featured-image/style-rtl.css 347 B
build/block-library/blocks/post-featured-image/style.css 347 B
build/block-library/blocks/post-navigation-link/style-rtl.css 215 B
build/block-library/blocks/post-navigation-link/style.css 214 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 399 B
build/block-library/blocks/post-template/style.css 398 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-time-to-read/style-rtl.css 70 B
build/block-library/blocks/post-time-to-read/style.css 70 B
build/block-library/blocks/post-title/style-rtl.css 162 B
build/block-library/blocks/post-title/style.css 162 B
build/block-library/blocks/preformatted/style-rtl.css 125 B
build/block-library/blocks/preformatted/style.css 125 B
build/block-library/blocks/pullquote/editor-rtl.css 134 B
build/block-library/blocks/pullquote/editor.css 134 B
build/block-library/blocks/pullquote/style-rtl.css 342 B
build/block-library/blocks/pullquote/style.css 342 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 121 B
build/block-library/blocks/query-pagination-numbers/editor.css 118 B
build/block-library/blocks/query-pagination/editor-rtl.css 154 B
build/block-library/blocks/query-pagination/editor.css 154 B
build/block-library/blocks/query-pagination/style-rtl.css 237 B
build/block-library/blocks/query-pagination/style.css 237 B
build/block-library/blocks/query-title/style-rtl.css 64 B
build/block-library/blocks/query-title/style.css 64 B
build/block-library/blocks/query/editor-rtl.css 452 B
build/block-library/blocks/query/editor.css 451 B
build/block-library/blocks/query/view.min.js 958 B
build/block-library/blocks/quote/style-rtl.css 238 B
build/block-library/blocks/quote/style.css 238 B
build/block-library/blocks/quote/theme-rtl.css 233 B
build/block-library/blocks/quote/theme.css 236 B
build/block-library/blocks/read-more/style-rtl.css 138 B
build/block-library/blocks/read-more/style.css 138 B
build/block-library/blocks/rss/editor-rtl.css 101 B
build/block-library/blocks/rss/editor.css 101 B
build/block-library/blocks/rss/style-rtl.css 288 B
build/block-library/blocks/rss/style.css 287 B
build/block-library/blocks/search/editor-rtl.css 199 B
build/block-library/blocks/search/editor.css 199 B
build/block-library/blocks/search/style-rtl.css 672 B
build/block-library/blocks/search/style.css 671 B
build/block-library/blocks/search/theme-rtl.css 113 B
build/block-library/blocks/search/theme.css 113 B
build/block-library/blocks/search/view.min.js 475 B
build/block-library/blocks/separator/editor-rtl.css 100 B
build/block-library/blocks/separator/editor.css 100 B
build/block-library/blocks/separator/style-rtl.css 248 B
build/block-library/blocks/separator/style.css 248 B
build/block-library/blocks/separator/theme-rtl.css 195 B
build/block-library/blocks/separator/theme.css 195 B
build/block-library/blocks/shortcode/editor-rtl.css 286 B
build/block-library/blocks/shortcode/editor.css 286 B
build/block-library/blocks/site-logo/editor-rtl.css 806 B
build/block-library/blocks/site-logo/editor.css 803 B
build/block-library/blocks/site-logo/style-rtl.css 218 B
build/block-library/blocks/site-logo/style.css 218 B
build/block-library/blocks/site-tagline/editor-rtl.css 87 B
build/block-library/blocks/site-tagline/editor.css 87 B
build/block-library/blocks/site-tagline/style-rtl.css 65 B
build/block-library/blocks/site-tagline/style.css 65 B
build/block-library/blocks/site-title/editor-rtl.css 85 B
build/block-library/blocks/site-title/editor.css 85 B
build/block-library/blocks/site-title/style-rtl.css 143 B
build/block-library/blocks/site-title/style.css 143 B
build/block-library/blocks/social-link/editor-rtl.css 338 B
build/block-library/blocks/social-link/editor.css 338 B
build/block-library/blocks/social-links/editor-rtl.css 729 B
build/block-library/blocks/social-links/editor.css 727 B
build/block-library/blocks/social-links/style-rtl.css 1.51 kB
build/block-library/blocks/social-links/style.css 1.5 kB
build/block-library/blocks/spacer/editor-rtl.css 346 B
build/block-library/blocks/spacer/editor.css 346 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table-of-contents/style-rtl.css 83 B
build/block-library/blocks/table-of-contents/style.css 83 B
build/block-library/blocks/table/editor-rtl.css 394 B
build/block-library/blocks/table/editor.css 394 B
build/block-library/blocks/table/style-rtl.css 640 B
build/block-library/blocks/table/style.css 639 B
build/block-library/blocks/table/theme-rtl.css 152 B
build/block-library/blocks/table/theme.css 152 B
build/block-library/blocks/tag-cloud/editor-rtl.css 144 B
build/block-library/blocks/tag-cloud/editor.css 144 B
build/block-library/blocks/tag-cloud/style-rtl.css 266 B
build/block-library/blocks/tag-cloud/style.css 265 B
build/block-library/blocks/template-part/editor-rtl.css 368 B
build/block-library/blocks/template-part/editor.css 368 B
build/block-library/blocks/template-part/theme-rtl.css 113 B
build/block-library/blocks/template-part/theme.css 113 B
build/block-library/blocks/term-description/style-rtl.css 126 B
build/block-library/blocks/term-description/style.css 126 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 165 B
build/block-library/blocks/text-columns/style.css 165 B
build/block-library/blocks/verse/style-rtl.css 98 B
build/block-library/blocks/verse/style.css 98 B
build/block-library/blocks/video/editor-rtl.css 396 B
build/block-library/blocks/video/editor.css 397 B
build/block-library/blocks/video/style-rtl.css 192 B
build/block-library/blocks/video/style.css 192 B
build/block-library/blocks/video/theme-rtl.css 134 B
build/block-library/blocks/video/theme.css 134 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.1 kB
build/block-library/common.css 1.1 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/editor-rtl.css 11.7 kB
build/block-library/editor.css 11.7 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/index.min.js 219 kB
build/block-library/reset-rtl.css 472 B
build/block-library/reset.css 472 B
build/block-library/style-rtl.css 14.9 kB
build/block-library/style.css 14.9 kB
build/block-library/theme-rtl.css 708 B
build/block-library/theme.css 712 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.87 kB
build/blocks/index.min.js 52.5 kB
build/commands/index.min.js 16.1 kB
build/commands/style-rtl.css 955 B
build/commands/style.css 952 B
build/components/index.min.js 227 kB
build/components/style-rtl.css 12.3 kB
build/components/style.css 12.3 kB
build/compose/index.min.js 12.7 kB
build/core-commands/index.min.js 3.11 kB
build/core-data/index.min.js 73.4 kB
build/customize-widgets/index.min.js 11 kB
build/customize-widgets/style-rtl.css 1.35 kB
build/customize-widgets/style.css 1.35 kB
build/data-controls/index.min.js 641 B
build/data/index.min.js 8.98 kB
build/date/index.min.js 18 kB
build/deprecated/index.min.js 458 B
build/dom-ready/index.min.js 325 B
build/dom/index.min.js 4.66 kB
build/edit-post/classic-rtl.css 578 B
build/edit-post/classic.css 580 B
build/edit-post/index.min.js 13.7 kB
build/edit-post/style-rtl.css 2.76 kB
build/edit-post/style.css 2.75 kB
build/edit-widgets/index.min.js 17.8 kB
build/edit-widgets/style-rtl.css 4.19 kB
build/edit-widgets/style.css 4.19 kB
build/editor/index.min.js 103 kB
build/editor/style-rtl.css 9.33 kB
build/editor/style.css 9.34 kB
build/element/index.min.js 4.83 kB
build/escape-html/index.min.js 537 B
build/format-library/index.min.js 8.11 kB
build/format-library/style-rtl.css 476 B
build/format-library/style.css 476 B
build/hooks/index.min.js 1.65 kB
build/html-entities/index.min.js 445 B
build/i18n/index.min.js 3.58 kB
build/is-shallow-equal/index.min.js 526 B
build/keyboard-shortcuts/index.min.js 1.31 kB
build/keycodes/index.min.js 1.46 kB
build/list-reusable-blocks/index.min.js 2.19 kB
build/list-reusable-blocks/style-rtl.css 852 B
build/list-reusable-blocks/style.css 852 B
build/media-utils/index.min.js 3.2 kB
build/notices/index.min.js 946 B
build/nux/index.min.js 1.62 kB
build/nux/style-rtl.css 749 B
build/nux/style.css 745 B
build/patterns/index.min.js 7.34 kB
build/patterns/style-rtl.css 687 B
build/patterns/style.css 685 B
build/plugins/index.min.js 1.81 kB
build/preferences-persistence/index.min.js 2.06 kB
build/preferences/index.min.js 2.9 kB
build/preferences/style-rtl.css 554 B
build/preferences/style.css 554 B
build/primitives/index.min.js 829 B
build/priority-queue/index.min.js 1.54 kB
build/private-apis/index.min.js 960 B
build/react-i18n/index.min.js 630 B
build/react-refresh-entry/index.min.js 9.47 kB
build/react-refresh-runtime/index.min.js 6.76 kB
build/redux-routine/index.min.js 2.69 kB
build/reusable-blocks/index.min.js 2.55 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 10.1 kB
build/router/index.min.js 1.96 kB
build/server-side-render/index.min.js 1.94 kB
build/shortcode/index.min.js 1.4 kB
build/style-engine/index.min.js 2.04 kB
build/token-list/index.min.js 581 B
build/url/index.min.js 3.9 kB
build/vendors/react-dom.min.js 41.7 kB
build/vendors/react-jsx-runtime.min.js 560 B
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 965 B
build/warning/index.min.js 250 B
build/widgets/index.min.js 7.17 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.03 kB

compressed-size-action

id={ generateItemWrapperCompositeId( idPrefix ) }
aria-pressed={ isSelected }
aria-labelledby={ labelId }
aria-describedby={ descriptionId }
className="dataviews-view-list__item"
onClick={ () => onSelect( item ) }
/>
Copy link
Contributor

@ciampo ciampo Sep 16, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm a bit worried about having a button with no contents, is there any way we could move all cell content (except for the actions buttons) inside it?

Copy link
Contributor Author

@stokesman stokesman Sep 16, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, this is the bit I wondered most about but hoped the existing aria-labeledby and aria-describedby makes it okay.

move all cell content (except for the actions buttons) inside it

The actions have to be a sibling of the title for the truncation to "just work". So both would have to stay outside the main button, but then they’d not be able to impact the layout of other content. Not to say that can’t be made to work, but then the title is outside the button anyway.

Copy link
Contributor Author

@stokesman stokesman Sep 20, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did some testing with VoiceOver and it announces the same content as on trunk when navigating the rows and gridcells here. I suppose to be totally sure testing with other screen readers is needed but I expect they all do well as support for aria-labelledby ought to be good.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@afercia maybe you could advise if this change is OK in terms of accessibility, or if it has unwanted consequences?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ciampo Technically, it's not that different from an icon-button where the SVG icon is aria-hidden so that the button is 'empty'. However, it's always preferable to not use ARIA when possible. We shouldn't assume all assistive technologies understand ARIA, for example with some combination of browsers and speech recognition software. Is it possible to use visually hidden content instead of aria-label?
Anyways, I'm not sure this is the only problem with the list view implementation and the dataviews in general as an in-depth accessibility audit has still to happen and that's something I can't do alone.

@noisysocks noisysocks added the Backport to WP 6.7 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta label Sep 18, 2024
@jameskoster
Copy link
Contributor

This looks good to me from the design perspective 👍

@ciampo
Copy link
Contributor

ciampo commented Sep 27, 2024

I've asked for some a11y-specific feedback. If I have time, I'd also like to try an alternative approach, since there are a couple of additional things about this use of Composite.Item that I think we can improve

@afercia
Copy link
Contributor

afercia commented Oct 2, 2024

Whel investigating for #65376 (comment) I noticed that the Edit and Action buttons have a label and description with the same text. This produces a double announcementfor screen reader eusers as both the label and description are announced:

  • Edit, Edit
  • Actions, Actions

Screenshot 2024-10-02 at 14 44 08

Screenshot 2024-10-02 at 14 44 27

I think but I'm not sure this is caused by the ariakit tooltip that automatically adds a description. As mentioned in other issues, the tooltip should not be used for the description and should only be used or the accessible name (the label).
This needs to be fixed as a double announcement is noisy and unnecessary.

Copy link
Member

@kevin940726 kevin940726 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR! This works great in my testing. I noticed something that could potentially be addressed in a follow-up, though:

  1. Hovering on the list item doesn't show the pointer cursor anymore.
  2. Since we truncate the text if it's too long, should we also show the full title when it's being hovered over? For instance, a tooltip or a title attribute (that's often considered inaccessible though).

@stokesman
Copy link
Contributor Author

@kevin940726, Thanks for testing and reviewing.

  1. Hovering on the list item doesn't show the pointer cursor anymore.

Thanks for spotting that! It seems to warrant fixing here so added a commit that should take care of it.

2. Since we truncate the text if it's too long, should we also show the full title when it's being hovered over? For instance, a tooltip or a title attribute (that's often considered inaccessible though).

Perhaps, it seems like enough text is visible to identify the entity so I’m not convinced it’s too important. Yet, if we think it’s helpful I'm not opposed. I believe the full title will be available to screen readers so maybe a title attribute would be good enough. It does seem like a follow up consideration.


As for landing this, @ciampo had mentioned he’d like to try an alternative #65376 (comment) so we may wish to wait for that. Yet he did mention additional improvements (a larger scope) so maybe it’s more of a follow up 🤔.

@afercia
Copy link
Contributor

afercia commented Oct 8, 2024

so maybe a title attribute would be good

Please don't introduce any title attribute. In the last years there's been a considerable effort to remove them from all the codebase. For core, see:
https://core.trac.wordpress.org/ticket/24766
https://core.trac.wordpress.org/query?keywords=~title-attribute

Copy link
Contributor

@aaronrobertshaw aaronrobertshaw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've taken this for a spin as well. As @kevin940726 notes it's working well for me.

Hovering on the list item doesn't show the pointer cursor anymore.

Thanks for spotting that! It seems to warrant fixing here so added a commit that should take care of it.

With the latest commit, the pointer cursor now appears when hovering the list items.

It does seem like a follow up consideration.

Agreed.

As this is a bug fix, there's still a small window where we can hold off on landing this while the alternative approach is explored.

If the scope of the alternative does prove too great, I don't think there is a lot of harm in merging this one and iterating from there. Just my two cents of course 🙂

@ciampo
Copy link
Contributor

ciampo commented Oct 8, 2024

Excuses for the delay in reviewing / proposing an alternate approach, WP release times can be hectic 😅

If the scope of the alternative does prove too great, I don't think there is a lot of harm in merging this one and iterating from there. Just my two cents of course 🙂

Agreed, let's merge this approach, and I can iterate on it anyway. Thank you for waiting on me, though ❤️

@stokesman stokesman force-pushed the fix/data-views-list-primary-field-truncation branch from 04da22b to 9601c78 Compare October 8, 2024 16:27
@stokesman stokesman enabled auto-merge (squash) October 8, 2024 16:28
@stokesman
Copy link
Contributor Author

stokesman commented Oct 8, 2024

I rebased on trunk to see if helps some of those e2e tests to run and enabled auto-merge. Thanks everyone for testing and reviewing!

Copy link

github-actions bot commented Oct 8, 2024

Flaky tests detected in 59e8b7d.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/11241830129
📝 Reported issues:

@stokesman
Copy link
Contributor Author

Thanks to an e2e test failure I realized we’d overlooked a difference. The primary field may contain a link and the changes here were making it so it was behind the main button and couldn’t be interacted with. Here’s a comparison to help illustrate:

This branch before db85c39 Trunk
template-list-primary-field-behind.mp4
template-list-trunk.mp4

The latest commit has it working again. I‘d prefer if there was a nicer way the component could know if the field is interactive and should be in front. It can’t unconditionally put it in front because when not interactive it creates a dead spot where clicking won’t activate the main button.

@ciampo
Copy link
Contributor

ciampo commented Oct 9, 2024

The primary field may contain a link

If that link is part of a composite item, that could be problematic in itself. It would be like rendering a link inside a button, which poses semantics and accessibility issues

@jameskoster
Copy link
Contributor

I don't know how feasible this is but ideally in List layout the primary field should not render as a link.

@ciampo
Copy link
Contributor

ciampo commented Oct 9, 2024

Is the "primary field as a link" something that can already happen on trunk? If so, it should be addressed separately (and with higher priority than this PR).

@stokesman
Copy link
Contributor Author

stokesman commented Oct 9, 2024

I don't know how feasible this is but ideally in List layout the primary field should not render as a link.

Good to hear, I suspected that was maybe unintended for the list view.


Is the "primary field as a link" something that can already happen on trunk? If so, it should be addressed separately (and with higher priority than this PR).

Yes, and on trunk it’s basically a link inside a button since the composite item has role="button". This PR does avoid that nesting so I think might be valid as a fix for that too.

Still at the least it sounds like PageTemplates should avoid rendering the link when the layout is list but I'm not sure the Dataviews API supports that. Also maybe that ideally wouldn’t be a consumer responsibility but I’ve only given this a cursory consideration.

@ciampo
Copy link
Contributor

ciampo commented Oct 9, 2024

Yes, and on trunk it’s basically a link inside a button since the composite item has role="button". This PR does avoid that nesting so I think might be valid as a fix for that too.

I see. Although I imagine it would be weird to have a link in between items of a composite widgets. IMO we should consider removing the link altogether — where does it even link to?

Still at the least it sounds like PageTemplates should avoid rendering the link when the layout is list but I'm not sure the Dataviews API supports that. Also maybe that ideally wouldn’t be a consumer responsibility but I’ve only given this a cursory consideration.

I think we should try to prevent inaccessible / non-semantic scenarios from happening. The primary field being a link could potentially be problematic also in other layouts (ie. grid). If we really need to have some sort links, we could consider adding it to the dropdown menu?

@kevin940726
Copy link
Member

FWIW, I think using links is better for accessibility if we take client side routing into consideration. There are a number of advantages over using buttons:

  1. It can be right clicked to open the context menu.
  2. It can be Cmd+clicked to open a new tab.
  3. Hover on the link shows the link url on the bottom left of the browser.
  4. If clicking on it changes the url then it should probably be a link.

That said, it's just my two cents and seems unrelated to this PR 😅. Do you think we can merge this for 6.7 and address follow-ups in other issues?

@ciampo
Copy link
Contributor

ciampo commented Oct 10, 2024

If we think that this PR is an improvement over what's on trunk (and not a regression), then we could go ahead.

Separately (and not for the 6.7 release) — I still think that this part of the UI needs a rewrite. If we want to retain the link, we should make the whole composite item a link, so that there's no "link inside button" nesting. I'll see if I can come up with a good solution in the upcoming weeks

@jameskoster
Copy link
Contributor

A detail to explore separately for sure, but perhaps records should be able to provide a url property which the data views component then applies to the primary field automatically, but only in certain layouts (table + grid).

It could potentially be abstracted further with an isEditable boolean. When true the primary field in table + grid layouts link to the editor passing the record id/post type. Then url could be used for custom / external edit paths.

@stokesman
Copy link
Contributor Author

stokesman commented Oct 10, 2024

If we think that this PR is an improvement over what's on trunk (and not a regression)

I don’t see a regression but I'm also not sure there’s much urgency to this or if it’s truly qualified for a backport to 6.7 because I’m not certain the hardcoded colors thing wasn’t already present in 6.6. EDIT: I just checked on playground with 6.6 and the list view didn’t have the hardcoded colors (the list layout was different back then) so I guess this does qualify.

Aside: props to all involved here. You are some smart cookies ❤️.

@ndiego
Copy link
Member

ndiego commented Oct 14, 2024

Hey folks, just catching up here. Is this still something we want to get into 6.7, or punt to 6.8? It seems like that's still an open discussion. RC1 is taking place later today.

@jameskoster
Copy link
Contributor

It would be good to include this in 6.7 if possible as it fixes a visual bug.

@ndiego
Copy link
Member

ndiego commented Oct 14, 2024

It would be good to include this in 6.7 if possible as it fixes a visual bug.

I agree, but this PR will need to be merged asap to get it in. cc @getdave @kevin940726

@stokesman stokesman merged commit 3d87652 into trunk Oct 14, 2024
63 checks passed
@stokesman stokesman deleted the fix/data-views-list-primary-field-truncation branch October 14, 2024 14:47
@github-actions github-actions bot added this to the Gutenberg 19.5 milestone Oct 14, 2024
@stokesman
Copy link
Contributor Author

I couldn’t see a reason not to. I’d been waiting to give a chance for folks to find one.

@github-actions github-actions bot removed the Backport to WP 6.7 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta label Oct 14, 2024
gutenbergplugin pushed a commit that referenced this pull request Oct 14, 2024
* Remove background-color and box-shadow from actions

* Shorten primary field’s text on hover or selected state

* Data Views list layout: revise for improved text truncation

* Let primary field be full with in resting state

* Remove seemingly errant border radius on item wrapper

* Unnest actions gridcells

* Fix cursor style of list items

* Update test selector

* Revert "Update test selector"

This reverts commit 59e8b7d.

* Put primary field in front if it has interactive elements

---------

Co-authored-by: colorful-tones <[email protected]>
Co-authored-by: ciampo <[email protected]>
Co-authored-by: afercia <[email protected]>
Co-authored-by: kevin940726 <[email protected]>
Co-authored-by: aaronrobertshaw <[email protected]>
Co-authored-by: jameskoster <[email protected]>
Co-authored-by: ndiego <[email protected]>
@github-actions github-actions bot added the Backported to WP Core Pull request that has been successfully merged into WP Core label Oct 14, 2024
Copy link

I just cherry-picked this PR to the wp/6.7 branch to get it included in the next release: 1ea0edd

@ndiego
Copy link
Member

ndiego commented Oct 14, 2024

I couldn’t see a reason not to. I’d been waiting to give a chance for folks to find one.

Awesome, thanks @stokesman!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Backported to WP Core Pull request that has been successfully merged into WP Core [Feature] DataViews Work surrounding upgrading and evolving views in the site editor and beyond [Type] Bug An existing feature does not function as intended
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

Fix hardcoded colors in Data Views
9 participants