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: API for layout density support #66837

Closed
wants to merge 8 commits into from

Conversation

ntsekouras
Copy link
Contributor

@ntsekouras ntsekouras commented Nov 7, 2024

What?

Part of: #66312

In #63367 a density picker was introduced for grid layout specifically. Density though is a concept that any layout could support, so we need an API for that.

The goals for this PR are:

  1. Create the APIs for that and remove the hardcode handling for grid. The idea is to have three density presets ( comfortable, balanced, compact ) for a user to choose from. A layout should have a flag if it supports density (it could also be possible to make the API to support specific density options and not all three of them..) and would handle the styles for each preset. In my initial commit I added the density prop to the view object, but it could also be under view.layout - I have to think more about it.
  2. Define and design the density picker control that will be used for any layout. There is a big discussion in the issue and we'll iterate to find the best possible solution. Currently I'm using a ToggleControlGroup, but it seems we might also be able to use a 'slider' if we have consensus about the comfortable, balanced, compact presets.
  3. grid layout should support density in a good, acceptable way. The main difference from trunk is that based on the viewport width we would show fewer suggestion in some cases, but here we always show three options. With the current values I'm using, this essentially results in having the same grid columns in two presets, at some viewport sizes. This can be discussed more though and/or adjust the number of columns. Noting that this shouldn't be the case for layouts like table or list, as they expand vertically.

Tasks

  • Add story (no need for a new one, since the control is rendered already in any story with a layout that supports the density).
  • Add/update docs
  • Add changelog entry

Follow ups

Testing Instructions

  1. In a list that uses DataViews 'grid' layout like patterns test the new control and how it behaves
  2. Do that in different viewports as well

Screenshots or screencast

Screen.Recording.2024-11-07.at.7.40.57.PM.mov

@ntsekouras ntsekouras added [Type] Enhancement A suggestion for improvement. [Feature] DataViews Work surrounding upgrading and evolving views in the site editor and beyond labels Nov 7, 2024
@ntsekouras ntsekouras self-assigned this Nov 7, 2024
@ntsekouras ntsekouras requested a review from ajitbohra as a code owner November 7, 2024 18:21
Copy link

github-actions bot commented Nov 7, 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.

Unlinked Accounts

The following contributors have not linked their GitHub and WordPress.org accounts: @annchichi.

Contributors, please read how to link your accounts to ensure your work is properly credited in WordPress releases.

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

Unlinked contributors: annchichi.

Co-authored-by: ntsekouras <[email protected]>
Co-authored-by: mcsf <[email protected]>
Co-authored-by: youknowriad <[email protected]>
Co-authored-by: oandregal <[email protected]>
Co-authored-by: jameskoster <[email protected]>
Co-authored-by: rogermattic <[email protected]>
Co-authored-by: jasmussen <[email protected]>
Co-authored-by: mtias <[email protected]>

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

@@ -30,6 +30,7 @@ export const VIEW_LAYOUTS = [
label: __( 'Grid' ),
component: ViewGrid,
icon: category,
supportsDensity: true,
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This could also be an array of supported presets.

Copy link
Member

Choose a reason for hiding this comment

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

We already have some hardcode logic in the view config that is layout specific. Note how the arrows to "move fields right/left" only show up in the table layout is active but not in any other layout:

Screenshot 2024-11-13 at 10 52 14

This is hardcoded logic we should aim to remove. The view config components should be layout agnostic, otherwise, we cannot open it to 3rd party layouts.

Connecting that thought with what you're doing here, it may be a good time to design this API to "declare features supported by the layout" instead of making it specific to density. For example, using supports: [ 'layout' ] or supports: { layout: true } instead of supportsDensity: true.

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 and was something I had in mind to do (your suggestion) if we had another case in the future. Since we have, I'll do it now. Thanks!

@ntsekouras ntsekouras added the Needs Design Feedback Needs general design feedback. label Nov 7, 2024
Copy link

github-actions bot commented Nov 7, 2024

Flaky tests detected in 9ee1bbb.
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/11911243411
📝 Reported issues:

@jameskoster
Copy link
Contributor

With the current values I'm using, this essentially results in having the same grid columns in two presets, at some viewport sizes. This can be discussed more though and/or adjust the number of columns.

This sounds a little strange to me. In terms of UX, modifying the density preference should always result in a visual change.

The tricky part here is aligning the three options to configurations in grid layout, accounting for container sizes. For instance we might say:

  • Comfortable = 3 columns
  • Medium = 4 columns
  • Compact = 5 columns

And that might work well in most cases. However, on small (mobile) screens the Pages grid would be very cramped at 5 columns, and 3 columns probably doesn't qualify as 'comfortable' :). A single-column layout seems legitimate at smaller sizes, and this wouldn't be possible. Moreover on a super wide screen you might want more than 5 columns. So I suppose the question to me is whether it should be possible for:

  1. The values associated with each density level to adapt at certain break points.
  2. Whether options should be conditional on certain breakpoints. In other words should it be possible for a consumer to say that there are only two density options when the container is smaller than x?

Then we can do something like:

Mobile In-between Super wide
Comfortable = 1 column
Medium = n/a
Compact = 2 columns
Comfortable = 3 columns
Medium = 4 columns
Compact = 5 columns
Comfortable = 4 columns
Medium=5 columns
Compact = 6 columns

I quite like the idea of using ToggleGroupControl if we're committed to offering at-most three options, but i18n might cause issues? Another option would be a good old fashioned RadioControl.

@rogermattic
Copy link

I quite like the idea of using ToggleGroupControl if we're committed to offering at-most three options, but i18n might cause issues? Another option would be a good old fashioned RadioControl.

I also like the and ideally, we can make it work :) but if the localisation brakes it I also like the idea of the RadioControl. To be fair I was thinking about the radio buttons here, but thought they weren't allowed in that panel so used this instead :D

@ntsekouras
Copy link
Contributor Author

ntsekouras commented Nov 11, 2024

The values associated with each density level to adapt at certain break points.

This implementation uses dynamic min/max values based on viewport.

Whether options should be conditional on certain breakpoints. In other words should it be possible for a consumer to say that there are only two density options when the container is smaller than x?

I'm not sure this will entirely solve the problem as a user could have selected a density option and then opens the menu and sees a different one selected? Having 3 options always seem consistent and the downside could be probably in mobile that comfortable and medium having the same value (1 column). I think that could be fine personally.

In the other cases, since we have control over the min/max values, could be:
comfortable: x - 1 columns
medium: x columns
compact: x + 1 columns.

For reference these are the default columns (medium) we have in css right now. We could provide different suggestions based on fewer breakpoints possibly.

packages/dataviews/src/types.ts Outdated Show resolved Hide resolved
packages/dataviews/src/types.ts Outdated Show resolved Hide resolved
packages/dataviews/src/dataviews-layouts/grid/index.tsx Outdated Show resolved Hide resolved
Comment on lines 7 to 10
const isXHuge = useViewportMatch( 'xhuge' );
const isHuge = useViewportMatch( 'huge' );
const isXlarge = useViewportMatch( 'xlarge' );
const isLarge = useViewportMatch( 'large' );
Copy link
Contributor

Choose a reason for hiding this comment

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

Tangential to the API discussion, but this may warrant creating a more appropriate alternative to calling useViewportMatch four times, no? I say this because it's calling useMediaQuery each time, which seems expensive.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yeah, I simplified a bit from the existing version, but will try to see if I can avoid these calls.

Copy link
Contributor

@mcsf mcsf left a comment

Choose a reason for hiding this comment

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

I think overall this is a viable path. Left some notes. I don't have an opinion on whether density belongs on its own or in layout.

@youknowriad
Copy link
Contributor

The way we've been going about these is that any layout specific property belongs in layout. That said, I think since we've introduced the defaultLayouts config, that rule is not relevant anymore and we should just remove the top level layout property (but this is probably separate from the current PR)

@ntsekouras ntsekouras force-pushed the dataviews/add-density-support-for-layouts branch from af17dba to 0087c4f Compare November 13, 2024 09:12
@oandregal
Copy link
Member

In a list that uses DataViews 'grid' layout like patterns test the new control and how it behaves

Took this PR for a spin. In this branch, the density options don't update upon viewport changes, while in trunk they do. It's weird that two options result in the same density at some viewports.

trunk:

Screen.Recording.2024-11-13.at.10.10.47.mov

This branch:

Screen.Recording.2024-11-13.at.10.12.33.mov

@ntsekouras
Copy link
Contributor Author

I rebased and addressed most of the current feedback.

Regarding the columns per viewport I changed the breakpoints to be:

comfortable: x - 1 columns
medium: x columns
compact: x + 1 columns

This results in visual change with two exceptions, which are probably ok in my opinion.

In mobile:
comfortable and medium have 1 column.

In small:
medium and compact have 2 columns.

I'd argue that in such small viewports users wouldn't bother much in density options.

@ntsekouras
Copy link
Contributor Author

ntsekouras commented Nov 13, 2024

@oandregal I just pushed some changes, so it would be good to test again.

The main difference from trunk is that we had this specific density implementation for grid that also changed the provided options (2 vs 3). I expanded on my last changes here.

I'm not sure it's better to add/remove options dynamically in an API that in most layouts the density should have visible results in any viewport. Layouts like grid are just a bit more nuanced, because they work better by knowing and using as best they can the viewport width.

/**
* The density of the view.
*/
density?: Density;
Copy link
Member

Choose a reason for hiding this comment

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

API-wise, I think this is the right choice.

A DataViews component prop seems a bit detached from what we already have (view config, default layouts).

view vs view.layout: density is a tool that DataViews shows to users in the view config. The view.layout is about things that are layout-specific and that the rest of the DataViews component doesn't know anything about (e.g.: the logic to handle the media field of grid is contained within the layout itself, there's no other controls in DataViews affected by that).

@jasmussen
Copy link
Contributor

Nice work, this seems to work well enough for me. At one of the densities, I did see non-square thumbnails at this viewport size, though:
2024-11-13 13 58 47 localhost dc4a745b5cf1

As for the slider itself, "Medium" is an odd one out, as a t-shirt size in between adjectives. Could we go with what Gmail does, Default/Comfortable/Compact instead? Or some other sequences?

density before

The segmented control is also hugely prominent and probably doesn't need to be a segmented control. Can we do dropdowns instead?

density after

@ntsekouras ntsekouras force-pushed the dataviews/add-density-support-for-layouts branch from d94a91a to e83e6ea Compare November 14, 2024 09:05
@ntsekouras
Copy link
Contributor Author

I updated the medium label to balanced and changed density and items per page to use SelectControl. I'll wait for more design feedback.

@ntsekouras ntsekouras force-pushed the dataviews/add-density-support-for-layouts branch from e83e6ea to 5c4e4cf Compare November 14, 2024 09:08
Copy link

github-actions bot commented Nov 14, 2024

Size Change: -133 B (-0.01%)

Total Size: 1.82 MB

Filename Size Change
build/edit-site/index.min.js 219 kB -110 B (-0.05%)
build/edit-site/posts-rtl.css 7.5 kB -6 B (-0.08%)
build/edit-site/posts.css 7.5 kB -5 B (-0.07%)
build/edit-site/style-rtl.css 13.3 kB -6 B (-0.04%)
build/edit-site/style.css 13.4 kB -6 B (-0.04%)
ℹ️ 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.42 kB
build/block-editor/content.css 4.41 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 255 kB
build/block-editor/style-rtl.css 15.4 kB
build/block-editor/style.css 15.4 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 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 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.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/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.25 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 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/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/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 273 B
build/block-library/blocks/social-link/editor.css 273 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.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 221 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 52.7 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.08 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.5 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.7 kB
build/edit-widgets/style-rtl.css 4.09 kB
build/edit-widgets/style.css 4.09 kB
build/editor/index.min.js 112 kB
build/editor/style-rtl.css 9.66 kB
build/editor/style.css 9.68 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 961 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.2 kB
build/router/index.min.js 2.11 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

@jameskoster
Copy link
Contributor

My preference would be to use ToggleGroupControl, mainly because it makes changing/previewing different density options more ergonomic.

In mobile:
comfortable and medium have 1 column.

In small:
medium and compact have 2 columns.

This part still feels a bit strange to me, but I suppose we can investigate in a follow-up based on feedback.

@rogermattic
Copy link

rogermattic commented Nov 18, 2024

I updated the medium label to balanced

Thanks, I think it works well @ntsekouras

@ntsekouras ntsekouras force-pushed the dataviews/add-density-support-for-layouts branch from 5c4e4cf to 9ee1bbb Compare November 19, 2024 10:36
@ntsekouras
Copy link
Contributor Author

@jameskoster I brought back the ToggleGroupControl. What is missing design wise to land?

@ntsekouras ntsekouras force-pushed the dataviews/add-density-support-for-layouts branch from 9ee1bbb to 764a09b Compare November 20, 2024 07:59
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.

Code-wise this is looking good. I only have one suggestion for the API. I'll do a final review after design approval in case things need to change.

@rogermattic
Copy link

@ntsekouras @jameskoster is there any way to see it localised to other language variants? I think this was the only concern, but I'll leave it to @jameskoster to confirm

@ntsekouras ntsekouras marked this pull request as draft November 20, 2024 11:49
@ntsekouras
Copy link
Contributor Author

I'm closing in favor of: #67170. So, please share feedback there.

Thanks for all the help here! After further consideration an abstraction for the density concept isn't a good fit for layouts at this moment. I explain more in that PR's description.

@ntsekouras ntsekouras closed this Nov 21, 2024
@oandregal oandregal deleted the dataviews/add-density-support-for-layouts branch November 21, 2024 10:25
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 Needs Design Feedback Needs general design feedback. [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Data views: Add density preference to Table layout
7 participants