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

DataViews: Unify layout config #67477

Merged
merged 20 commits into from
Dec 6, 2024
Merged

DataViews: Unify layout config #67477

merged 20 commits into from
Dec 6, 2024

Conversation

youknowriad
Copy link
Contributor

@youknowriad youknowriad commented Dec 2, 2024

Fixes #67391

What?

As explained in the main issue, the purpose of this PR is to unify the layout config and behavior for title, media and description fields. For the full reasoning, check the issue.

This is still not finished, but here's a todo list to track the progress. It's already possible to review I think.

Todo

  • Update the behavior of the different layouts.
  • Check and update the styles properly.
  • Update the stories.
  • Update the documentation.
  • Allow toggling the visibility of the title, media and description from the view config menu.
  • Add a decent "table header" menu for the primary column in the table layout.

Testing Instructions

1- Open the different dataviews (templates, patterns and pages)
2- Check the design of the different layouts.
3- Check how the "properties" menu work in the different layout.

@youknowriad youknowriad added [Type] Enhancement A suggestion for improvement. [Feature] DataViews Work surrounding upgrading and evolving views in the site editor and beyond labels Dec 2, 2024
@youknowriad youknowriad self-assigned this Dec 2, 2024
@youknowriad youknowriad force-pushed the unify/dataviews-layout branch from 978e283 to 7f80b9d Compare December 2, 2024 14:37
Copy link

github-actions bot commented Dec 2, 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: youknowriad <[email protected]>
Co-authored-by: jorgefilipecosta <[email protected]>
Co-authored-by: oandregal <[email protected]>
Co-authored-by: jameskoster <[email protected]>
Co-authored-by: lsl <[email protected]>
Co-authored-by: ntsekouras <[email protected]>

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

Copy link
Member

@jorgefilipecosta jorgefilipecosta left a comment

Choose a reason for hiding this comment

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

This PR removes the ability to reorder fields from the view config, not sure if this is intentional.
Discard the comment, it is working probably was not working because of some local change while testing / debugging.

Copy link
Member

@jorgefilipecosta jorgefilipecosta left a comment

Choose a reason for hiding this comment

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

I'm not sure if the "Primary" column on the table layout should always say "Primary", primary normally is associated to a field which is the primary key in a database which is not the case. I guess it should be possible to customize this "primary label".

Copy link
Member

@jorgefilipecosta jorgefilipecosta left a comment

Choose a reason for hiding this comment

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

On the template list view we allow to hide and show the preview, but showing just adds an empty space. Why do we allow to hide and show the preview on list view but not on the other layouts? I think for now the ability to hide and show media fields was not yet implemented.

@youknowriad
Copy link
Contributor Author

@jorgefilipecosta Because, I wanted to try the possibility to have a "mediaField" defined in one layout but not others (to check that it works). We can define it in all views and the "preview" won't be available to show/hide anymore.

That said, I want to first introduce the possibility to toggle these fields visibility on/off first.

Copy link

github-actions bot commented Dec 3, 2024

Size Change: -354 B (-0.02%)

Total Size: 1.83 MB

Filename Size Change
build/edit-site/index.min.js 220 kB +278 B (+0.13%)
build/edit-site/posts-rtl.css 7.38 kB -162 B (-2.15%)
build/edit-site/posts.css 7.38 kB -164 B (-2.17%)
build/edit-site/style-rtl.css 13.6 kB -153 B (-1.11%)
build/edit-site/style.css 13.6 kB -153 B (-1.11%)
ℹ️ 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 742 B
build-module/block-library/search/view.min.js 616 B
build-module/interactivity-router/index.min.js 3.03 kB
build-module/interactivity/debug.min.js 17.2 kB
build-module/interactivity/index.min.js 13.6 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 kB
build/block-directory/style.css 1 kB
build/block-editor/content-rtl.css 4.47 kB
build/block-editor/content.css 4.46 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 258 kB
build/block-editor/style-rtl.css 15.7 kB
build/block-editor/style.css 15.7 kB
build/block-library/blocks/archives/editor-rtl.css 84 B
build/block-library/blocks/archives/editor.css 83 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 555 B
build/block-library/blocks/button/style.css 555 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 139 B
build/block-library/blocks/code/style.css 139 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 238 B
build/block-library/blocks/comments-pagination/editor.css 231 B
build/block-library/blocks/comments-pagination/style-rtl.css 245 B
build/block-library/blocks/comments-pagination/style.css 241 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 837 B
build/block-library/blocks/comments/editor.css 836 B
build/block-library/blocks/comments/style-rtl.css 637 B
build/block-library/blocks/comments/style.css 637 B
build/block-library/blocks/cover/editor-rtl.css 631 B
build/block-library/blocks/cover/editor.css 631 B
build/block-library/blocks/cover/style-rtl.css 1.7 kB
build/block-library/blocks/cover/style.css 1.69 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/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 799 B
build/block-library/blocks/image/editor.css 799 B
build/block-library/blocks/image/style-rtl.css 1.6 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/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 139 B
build/block-library/blocks/latest-posts/editor.css 138 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 552 B
build/block-library/blocks/media-text/style.css 550 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.2 kB
build/block-library/blocks/navigation/editor.css 2.2 kB
build/block-library/blocks/navigation/style-rtl.css 2.24 kB
build/block-library/blocks/navigation/style.css 2.23 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 192 B
build/block-library/blocks/page-list/style.css 192 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 351 B
build/block-library/blocks/pullquote/style.css 350 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 527 B
build/block-library/blocks/query/editor.css 527 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 660 B
build/block-library/blocks/search/style.css 658 B
build/block-library/blocks/search/theme-rtl.css 113 B
build/block-library/blocks/search/theme.css 113 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 309 B
build/block-library/blocks/social-link/editor.css 309 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 441 B
build/block-library/blocks/video/editor.css 442 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.08 kB
build/block-library/common.css 1.08 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.8 kB
build/block-library/editor.css 11.8 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/index.min.js 222 kB
build/block-library/reset-rtl.css 472 B
build/block-library/reset.css 472 B
build/block-library/style-rtl.css 15 kB
build/block-library/style.css 15 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 53 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 228 kB
build/components/style-rtl.css 12.4 kB
build/components/style.css 12.4 kB
build/compose/index.min.js 12.7 kB
build/core-commands/index.min.js 3.09 kB
build/core-data/index.min.js 74.3 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.69 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.3 kB
build/edit-post/style-rtl.css 2.75 kB
build/edit-post/style.css 2.75 kB
build/edit-widgets/index.min.js 17.7 kB
build/edit-widgets/style-rtl.css 4.09 kB
build/edit-widgets/style.css 4.09 kB
build/editor/index.min.js 114 kB
build/editor/style-rtl.css 9.25 kB
build/editor/style.css 9.25 kB
build/element/index.min.js 4.82 kB
build/escape-html/index.min.js 537 B
build/format-library/index.min.js 8.05 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.13 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.58 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.37 kB
build/patterns/style-rtl.css 687 B
build/patterns/style.css 685 B
build/plugins/index.min.js 1.86 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 972 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.7 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.3 kB
build/router/index.min.js 5.42 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 556 B
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 965 B
build/vips/index.min.js 36.2 kB
build/warning/index.min.js 250 B
build/widgets/index.min.js 7.16 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

@youknowriad
Copy link
Contributor Author

This is getting very close to be ready (missing the table header), I would appreciate more design reviews...

@jameskoster
Copy link
Contributor

There's something not right with the properties list in view options; the UI around toggling visibility is behaving unexpectedly. Probably best described with a video:

visibility.mp4

FWIW if this could be made into a single list, rather than separating visible / invisible properties that would might be a win.


On the Pages dataview the Title appears separate from other properties, and I'm unable to re-order the first item in the list:

pages.mp4

Patterns seems okay, though I notice there's no set order by default. That's the case on trunk too, but it may be a bug?

@youknowriad
Copy link
Contributor Author

FWIW if this could be made into a single list, rather than separating visible / invisible properties that would might be a win.

It's important to note that the three first fields are special, in the sense that they can't be moved up or down. I can make it look like a single list but it's not a single list, you can move the "author" above "media" or media above title.

On the Pages dataview the Title appears separate from other properties, and I'm unable to re-order the first item in the list:

This is by design, these fields are special and can't be moved (see the issue)

@jameskoster
Copy link
Contributor

Understood. It's most confusing in the Templates example, where toggling Author visibility appears to just remove the 'Hidden' label.

I think the list needs a bit of design work to communicate the different concepts. Leave it with me.

@jameskoster
Copy link
Contributor

Actually...

This is by design, these fields are special and can't be moved (see the issue)

In the pages case 'Title' is the only special field, correct? Why can't I move the first property in the list beneath title?

@youknowriad
Copy link
Contributor Author

In the pages case 'Title' is the only special field, correct? Why can't I move the first property in the list beneath title?

Title and featured image are the special fields in the "pages" case. You should be able to move "status", maybe it's a bug there. I'll take a look.

@youknowriad
Copy link
Contributor Author

@jameskoster Fixed the bug and it looks like there's no featured image for pages, I was wrong there :P

@jameskoster
Copy link
Contributor

jameskoster commented Dec 3, 2024

I think the list needs a bit of design work to communicate the different concepts. Leave it with me.

A quick mockup for this one:

list.mp4
  • 'Special' fields are locked and have a stronger stroke.
  • Hidden fields remain in place when hidden rather than creating a separate list, and can still be re-ordered.

This maintains the appearance of a single list while (hopefully) communicating the concepts at play a bit better. I'd welcome feedback though cc @WordPress/gutenberg-design

@youknowriad
Copy link
Contributor Author

Hidden fields remain in place when hidden rather than creating a separate list, and can still be re-ordered.

The problem here is that at the moment we can't keep them at the same position, we can move them at the end of the list if needed but their "previous" order is lost when they're hidden.

const viewFields = view.fields || fields.map( ( field ) => field.id );
const { visibleFields, badgeFields } = fields.reduce(
const otherFields = view.fields ?? [];
const { regularFields, badgeFields } = fields.reduce(
Copy link
Member

Choose a reason for hiding this comment

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

Could this benefit from a useMemo to avoid creating new objects on every rerender?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It would only benefit from useMemo if the the component receiving this prop is memoized. I'd avoid this kind of early optimizations for now because we're not measuring that this is a perf issue but it could be something to explore once we have better dataviews performance tracking.

*/
direction: 'horizontal' | 'vertical';
showMedia?: boolean;
Copy link
Member

@jorgefilipecosta jorgefilipecosta Dec 3, 2024

Choose a reason for hiding this comment

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

Could we remove the showMedia Property and assume that if mediaField is not on the list of visible fields it is hidden?
Related soon we would have the ability to offer multiple media fields and switch between them #67278.

The way I see things in the future is mediaField(s) specified which fields can be media e.g: "featured-image", "preview" etc. And in fields we specify which media fields are visible (in some layouts like grid only one is visible in other like table multiple ones can be visible).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Could we remove the showMedia Property and assume that if mediaField is not on the list of visible fields it is hidden?

If we do this, the "reordering" of the fields (other than media, title, description) becomes more complex, we'd need to "skip" them kind of regardless of where they are in the array.

Copy link
Member

Choose a reason for hiding this comment

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

I guess it is ok to keep showMedia for now but on #67278 we may need to do changes.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Why would we change it?

Copy link
Member

Choose a reason for hiding this comment

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

We will have multiple media fields, I guess the way which we use to say which of the media fields is active could be used to say no media field is active at all.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I think these two things might be separate things. "picking a media field" and "toggling its visibility". We have mediaField property in the view for picking the mediaField and showMedia is for whether to show it or not.

Copy link
Member

Choose a reason for hiding this comment

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

The plan was for mediaField to become mediaFields to indicate the fields that could be media. We could say the first array item is the active one.

One thing we are not able to express would be to allow multiple media fields to be shown on the table layout, but I guess that's okay; otherwise, we would have different behaviors between the layouts.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I think the active media field and the available media fields are two different things. For the latter I'm not sure it's something for the "view" object and more a config of the fields themselves.

Copy link
Member

Choose a reason for hiding this comment

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

For the latter I'm not sure it's something for the "view" object and more a config of the fields themselves.

We were discussing that at #67278 (comment).
We can continue the discussion there both options are a possibility either the field it self says it is media, or the view says which fields are media. I guess we need to decide.

@jameskoster
Copy link
Contributor

The problem here is that at the moment we can't keep them at the same position, we can move them at the end of the list if needed but their "previous" order is lost when they're hidden.

Okay, let's tweak things a bit:

properties.mp4

Hidden fields move to the end of the list, with a stronger separator (same as special fields). No ordering controls appear on hover. Do you think this could work?

@youknowriad
Copy link
Contributor Author

Hidden fields move to the end of the list, with a stronger separator (same as special fields). No ordering controls appear on hover. Do you think this could work?

Yes, personally I don't really like the strong separator (I barely see it) but yes it can work.

@youknowriad
Copy link
Contributor Author

@jameskoster I'm finding it a bit confusing to mix "hidden" and "visible" fields in the same list (when trying this). I'll push in a bit but wanted to let you know.

@youknowriad youknowriad force-pushed the unify/dataviews-layout branch from 8a1e4fd to e6f61cd Compare December 5, 2024 13:50
@youknowriad
Copy link
Contributor Author

Pending the question on "show" or "hide" for the configs, I think I addressed all your comments @oandregal

@jameskoster
Copy link
Contributor

I think I updated the menu as desired.

Did you push this, it doesn't look like the mockups?

  • I don't see the lock icon on fully-locked fields.
  • Still seeing the double-stroke.
  • Movers should be visible but disabled with a tooltip to explain the field cannot be moved.

@youknowriad
Copy link
Contributor Author

@jameskoster I guess I updated the behavior but not these small details :)

@youknowriad
Copy link
Contributor Author

Made these tweaks, I'm still not satisfied fully personally. I'd rather show these fields in a separate list because they are separate, they are special and not rendered in the same list as the rest. That said, I'm fine with this as a first iteration. I think we need to get this PR in and we can always iterate on the details of how the menu should look.

Copy link
Member

@jorgefilipecosta jorgefilipecosta left a comment

Choose a reason for hiding this comment

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

Nit: The lock button is not vertically aligned (13px vs 19px):
Screenshot 2024-12-05 at 15 23 44

Copy link
Member

@jorgefilipecosta jorgefilipecosta left a comment

Choose a reason for hiding this comment

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

Things worked well on the tests I did and the code looks good I agree with the direction being taken here.

@oandregal
Copy link
Member

oandregal commented Dec 5, 2024

Checking empty states.

In theory, consumers can configure a layout without any of the primary/media/description fields. This is how it'd look like:

Table Grid Layout
No other fields visible Screenshot 2024-12-05 at 17 32 15 Screenshot 2024-12-05 at 17 32 20 Screenshot 2024-12-05 at 17 32 10
Some other field visible Screenshot 2024-12-05 at 17 31 47 Screenshot 2024-12-05 at 17 31 52 Screenshot 2024-12-05 at 17 31 59

Some thoughts:

  • I think we have to remove the enableHiding prop from the Field config. It no longer works as intended. For example, to implement my suggestion above (make the media field always visible in the grid layout), you'd have to set the previewField.enableHiding to false. That's why the title field is not toggeable. However, if you do so, users wouldn't be able to hide the media field from the list & table layouts. It should be the layout/consumer who decides when a field is visible and under what conditions it should be toggeable.

  • Some layouts do not work well without the special fields. Title for list, or media for grid are essential part of how the layout is designed. If they're not present the layout looks unpolished or broken. Some behaviours depend on the special fields: in grid layout, users cannot select individual items if the media field is not present. Either we adapt the design of these layouts or we create a mechanism for fields to be locked per layout.

@youknowriad
Copy link
Contributor Author

I think we should

  • throw an error when "title field" is not defined in grid and list layouts.
  • remove enableHiding config.
  • I think table block is fine without any of the primary fields.

But I think we should do all these adaptations in follow-ups.

mediaField: 'featured_media',
},
},
[ LAYOUT_TABLE ]: {},
Copy link
Member

Choose a reason for hiding this comment

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

This PR de-emphasizes what defaultLayouts was about. We could make it optional now, as the only cases where consumers would pass this are: 1) they want to disable a specific layout 2) configure grid (badges, or default preview size), or 3) configure table (styles, or default density)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It's also about providing the available layouts to switch to. omitting it means no layout switching.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I agree we should de-emphasize even more. "badge" should be cross layout.
I'm not sure how to solve the rest (preview size, styles, default density)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Epiphany: I feel we may have been thinking about this wrong :)

Instead of trying to guess how to switch layouts within DataViews, it seems the right solution is to actually remove the view type switching logic from the DataViews component itself. It should be just injected as an external component (in header prop maybe)

Copy link
Member

@oandregal oandregal Dec 5, 2024

Choose a reason for hiding this comment

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

I'm not sure if that's what you're thinking about, but extending layouts is relevant to this conversation. I think the final API could be something along these lines:

<DataViews
  layouts=[ 'table', { type: 'grid', badgeFields: [ 'field' ] }, MyCustomLayoutComponent ]
/>

which means:

  • use the bundled table layout as it is
  • use the bundled grid layout, and configure the following fields as badge fields
  • do not use the bundled list layout, because it's not part of the array
  • Use the MyCustomLayoutComponent layout, a custom not bundled layout that implements everything a layout should have (icon & name for the switcher, behaviour, any view config control, etc.)

<HStack
justify="flex-end"
expanded={ false }
className="dataviews-field-control__actions"
>
{ view.type === LAYOUT_TABLE && isVisible && (
{ isVisible && (
Copy link
Member

Choose a reason for hiding this comment

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

I think moving fields could work in grid & list layouts, so leaving those controls visible would be good. Though, right now, they don't work, so this is what happens:

Screen.Recording.2024-12-05.at.18.48.27.mov

If we implement moving the fields in list&grid layouts, it helps us making the view config layout-agnostic. That's a win.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I don't think we should allow moving the special fields in either layout, specifically to stay consistent. In "table" it doesn't make sense to put "media" after "title" for instance (same for list I think). So instead of trying to guess what can work where. It's better to be opinionated here. This is the main goal of this PR.

Copy link
Member

@oandregal oandregal Dec 5, 2024

Choose a reason for hiding this comment

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

I don't think we should allow moving the special fields in either layout, specifically to stay consistent. In "table" it doesn't make sense to put "media" after "title" for instance (same for list I think). So instead of trying to guess what can work where. It's better to be opinionated here. This is the main goal of this PR.

I agree and that's not what I suggested :) My point was about the other fields: in list & grid the moving controls are visible but they do nothing to the layout. Either we make them invisible (like trunk) or update the layout to actually move the fields (and I prefer the later).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

moving controls are visible but they do nothing to the layout.

Oh I didn't know that. I just assumed that they worked because it was "obvious" to me that they should work :P
Happy to address that in a follow-up.

Copy link
Member

@oandregal oandregal left a comment

Choose a reason for hiding this comment

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

This is working well.

In terms of API, I think it's solid, and I've left some comments that I think should be addressed as follow-ups. I didn't review all the code details other than the main API flows, because it's so big a PR that it'd take a lot.

@youknowriad youknowriad merged commit 6b16c73 into trunk Dec 6, 2024
77 of 85 checks passed
@youknowriad youknowriad deleted the unify/dataviews-layout branch December 6, 2024 08:55
@github-actions github-actions bot added this to the Gutenberg 19.9 milestone Dec 6, 2024
@jameskoster
Copy link
Contributor

Thank you for adjusting those details @youknowriad. I agree this isn't perfect but it's in a decent spot. I'll open an issue about communicating the 'special' nature of fields in the design.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] DataViews Work surrounding upgrading and evolving views in the site editor and beyond [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

DataViews: Unify layout behavior.
4 participants