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

List View: Reduce spacing for each nesting level, and between block icon and block title #49600

Closed

Conversation

andrewserong
Copy link
Contributor

@andrewserong andrewserong commented Apr 5, 2023

What?

Part of #49563

Reduce the margin for each nesting level of the list view, so that more nesting levels can fit within the sidebar before needing to scroll.

This idea came out of review discussion over in #49508 (review)

Why?

It's quite common, especially in the site editor, to have heavily nested lists of blocks. The goal with this PR is to see if contracting the use of space will make for an easier to use UX for deeply nested hierarchies.

How?

  • Update the left margin for nested blocks in the list view to use half of the icon width
  • Reduce the spacing between the block icon and the block title to 4px (from 8px)

Testing Instructions

  1. Add a whole bunch of nested blocks to a post or template
  2. Open them up in the list view and move things around. How does it look?
  3. Drag blocks between items — note that the drop line indicator is lined up with the right edgeof the parent block's icon. Is this position okay?

Note: the styling rules for the list view currently max out at a nesting level of 8, so deeper than 8 will render at the same nesting level within the UI.

Some heavily nested block markup for testing
<!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group"><!-- wp:paragraph -->
<p>A paragraph in a group level 1</p>
<!-- /wp:paragraph -->

<!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group"><!-- wp:paragraph -->
<p>A paragraph in a group level 2</p>
<!-- /wp:paragraph -->

<!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group"><!-- wp:paragraph -->
<p>A paragraph in a group level 3</p>
<!-- /wp:paragraph -->

<!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group"><!-- wp:paragraph -->
<p>A paragraph in a group level 4</p>
<!-- /wp:paragraph -->

<!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group"><!-- wp:paragraph -->
<p>A paragraph in a group level 5</p>
<!-- /wp:paragraph -->

<!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group"><!-- wp:paragraph {"anchor":""} -->
<p>A paragraph in a group level 6</p>
<!-- /wp:paragraph -->

<!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group"><!-- wp:paragraph {"anchor":""} -->
<p>A paragraph in a group level 7</p>
<!-- /wp:paragraph -->

<!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group"><!-- wp:paragraph {"anchor":""} -->
<p>A paragraph in a group level 8</p>
<!-- /wp:paragraph -->

<!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group"><!-- wp:paragraph {"anchor":""} -->
<p>A paragraph in a group level 9</p>
<!-- /wp:paragraph --></div>
<!-- /wp:group --></div>
<!-- /wp:group --></div>
<!-- /wp:group --></div>
<!-- /wp:group --></div>
<!-- /wp:group --></div>
<!-- /wp:group --></div>
<!-- /wp:group --></div>
<!-- /wp:group --></div>
<!-- /wp:group -->

<!-- wp:heading -->
<h2 class="wp-block-heading">A heading</h2>
<!-- /wp:heading -->

Testing Instructions for Keyboard

Screenshots or screencast

Before After
image image

@andrewserong andrewserong added [Type] Enhancement A suggestion for improvement. [Feature] List View Menu item in the top toolbar to select blocks from a list of links. labels Apr 5, 2023
@andrewserong andrewserong self-assigned this Apr 5, 2023
@github-actions
Copy link

github-actions bot commented Apr 5, 2023

Size Change: +3.87 kB (0%)

Total Size: 1.37 MB

Filename Size Change
build/block-editor/index.min.js 203 kB +1.87 kB (+1%)
build/block-editor/style-rtl.css 14.6 kB +96 B (+1%)
build/block-editor/style.css 14.6 kB +98 B (+1%)
build/block-library/editor-rtl.css 11.7 kB +16 B (0%)
build/block-library/editor.css 11.7 kB +17 B (0%)
build/block-library/index.min.js 204 kB +1.23 kB (+1%)
build/block-library/style-rtl.css 12.8 kB +11 B (0%)
build/block-library/style.css 12.8 kB +12 B (0%)
build/components/index.min.js 208 kB +18 B (0%)
build/edit-post/index.min.js 35 kB +162 B (0%)
build/edit-post/style-rtl.css 7.59 kB -5 B (0%)
build/edit-post/style.css 7.58 kB -4 B (0%)
build/edit-site/index.min.js 64.3 kB +475 B (+1%)
build/edit-site/style-rtl.css 10.1 kB -67 B (-1%)
build/edit-site/style.css 10.1 kB -65 B (-1%)
build/private-apis/index.min.js 942 B +5 B (+1%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 993 B
build/annotations/index.min.js 2.78 kB
build/api-fetch/index.min.js 2.27 kB
build/autop/index.min.js 2.15 kB
build/blob/index.min.js 483 B
build/block-directory/index.min.js 7.2 kB
build/block-directory/style-rtl.css 1.04 kB
build/block-directory/style.css 1.04 kB
build/block-editor/content-rtl.css 4.11 kB
build/block-editor/content.css 4.1 kB
build/block-editor/default-editor-styles-rtl.css 403 B
build/block-editor/default-editor-styles.css 403 B
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 150 B
build/block-library/blocks/audio/editor.css 150 B
build/block-library/blocks/audio/style-rtl.css 122 B
build/block-library/blocks/audio/style.css 122 B
build/block-library/blocks/audio/theme-rtl.css 138 B
build/block-library/blocks/audio/theme.css 138 B
build/block-library/blocks/avatar/editor-rtl.css 116 B
build/block-library/blocks/avatar/editor.css 116 B
build/block-library/blocks/avatar/style-rtl.css 91 B
build/block-library/blocks/avatar/style.css 91 B
build/block-library/blocks/block/editor-rtl.css 305 B
build/block-library/blocks/block/editor.css 305 B
build/block-library/blocks/button/editor-rtl.css 587 B
build/block-library/blocks/button/editor.css 587 B
build/block-library/blocks/button/style-rtl.css 628 B
build/block-library/blocks/button/style.css 627 B
build/block-library/blocks/buttons/editor-rtl.css 337 B
build/block-library/blocks/buttons/editor.css 337 B
build/block-library/blocks/buttons/style-rtl.css 332 B
build/block-library/blocks/buttons/style.css 332 B
build/block-library/blocks/calendar/style-rtl.css 239 B
build/block-library/blocks/calendar/style.css 239 B
build/block-library/blocks/categories/editor-rtl.css 113 B
build/block-library/blocks/categories/editor.css 112 B
build/block-library/blocks/categories/style-rtl.css 124 B
build/block-library/blocks/categories/style.css 124 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 124 B
build/block-library/blocks/code/theme.css 124 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 409 B
build/block-library/blocks/columns/style.css 409 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 125 B
build/block-library/blocks/comment-author-avatar/editor.css 125 B
build/block-library/blocks/comment-content/style-rtl.css 92 B
build/block-library/blocks/comment-content/style.css 92 B
build/block-library/blocks/comment-template/style-rtl.css 199 B
build/block-library/blocks/comment-template/style.css 198 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 123 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 222 B
build/block-library/blocks/comments-pagination/editor.css 209 B
build/block-library/blocks/comments-pagination/style-rtl.css 235 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 840 B
build/block-library/blocks/comments/editor.css 839 B
build/block-library/blocks/comments/style-rtl.css 637 B
build/block-library/blocks/comments/style.css 636 B
build/block-library/blocks/cover/editor-rtl.css 649 B
build/block-library/blocks/cover/editor.css 651 B
build/block-library/blocks/cover/style-rtl.css 1.61 kB
build/block-library/blocks/cover/style.css 1.6 kB
build/block-library/blocks/details-summary/editor-rtl.css 65 B
build/block-library/blocks/details-summary/editor.css 65 B
build/block-library/blocks/details-summary/style-rtl.css 61 B
build/block-library/blocks/details-summary/style.css 61 B
build/block-library/blocks/details/style-rtl.css 54 B
build/block-library/blocks/details/style.css 54 B
build/block-library/blocks/embed/editor-rtl.css 293 B
build/block-library/blocks/embed/editor.css 293 B
build/block-library/blocks/embed/style-rtl.css 410 B
build/block-library/blocks/embed/style.css 410 B
build/block-library/blocks/embed/theme-rtl.css 138 B
build/block-library/blocks/embed/theme.css 138 B
build/block-library/blocks/file/editor-rtl.css 300 B
build/block-library/blocks/file/editor.css 300 B
build/block-library/blocks/file/style-rtl.css 269 B
build/block-library/blocks/file/style.css 270 B
build/block-library/blocks/file/view.min.js 353 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB
build/block-library/blocks/freeform/editor.css 2.44 kB
build/block-library/blocks/gallery/editor-rtl.css 984 B
build/block-library/blocks/gallery/editor.css 988 B
build/block-library/blocks/gallery/style-rtl.css 1.55 kB
build/block-library/blocks/gallery/style.css 1.55 kB
build/block-library/blocks/gallery/theme-rtl.css 122 B
build/block-library/blocks/gallery/theme.css 122 B
build/block-library/blocks/group/editor-rtl.css 654 B
build/block-library/blocks/group/editor.css 654 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 76 B
build/block-library/blocks/heading/style.css 76 B
build/block-library/blocks/html/editor-rtl.css 332 B
build/block-library/blocks/html/editor.css 333 B
build/block-library/blocks/image/editor-rtl.css 830 B
build/block-library/blocks/image/editor.css 829 B
build/block-library/blocks/image/style-rtl.css 652 B
build/block-library/blocks/image/style.css 652 B
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 357 B
build/block-library/blocks/latest-comments/style.css 357 B
build/block-library/blocks/latest-posts/editor-rtl.css 213 B
build/block-library/blocks/latest-posts/editor.css 212 B
build/block-library/blocks/latest-posts/style-rtl.css 478 B
build/block-library/blocks/latest-posts/style.css 478 B
build/block-library/blocks/list/style-rtl.css 88 B
build/block-library/blocks/list/style.css 88 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 507 B
build/block-library/blocks/media-text/style.css 505 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 716 B
build/block-library/blocks/navigation-link/editor.css 715 B
build/block-library/blocks/navigation-link/style-rtl.css 115 B
build/block-library/blocks/navigation-link/style.css 115 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 299 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation/editor-rtl.css 2.13 kB
build/block-library/blocks/navigation/editor.css 2.14 kB
build/block-library/blocks/navigation/style-rtl.css 2.22 kB
build/block-library/blocks/navigation/style.css 2.21 kB
build/block-library/blocks/navigation/view-modal.min.js 2.81 kB
build/block-library/blocks/navigation/view.min.js 447 B
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 401 B
build/block-library/blocks/page-list/editor.css 401 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 174 B
build/block-library/blocks/paragraph/editor.css 174 B
build/block-library/blocks/paragraph/style-rtl.css 279 B
build/block-library/blocks/paragraph/style.css 281 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 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 501 B
build/block-library/blocks/post-comments-form/style.css 501 B
build/block-library/blocks/post-date/style-rtl.css 61 B
build/block-library/blocks/post-date/style.css 61 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 141 B
build/block-library/blocks/post-excerpt/style.css 141 B
build/block-library/blocks/post-featured-image/editor-rtl.css 588 B
build/block-library/blocks/post-featured-image/editor.css 586 B
build/block-library/blocks/post-featured-image/style-rtl.css 322 B
build/block-library/blocks/post-featured-image/style.css 322 B
build/block-library/blocks/post-navigation-link/style-rtl.css 153 B
build/block-library/blocks/post-navigation-link/style.css 153 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 281 B
build/block-library/blocks/post-template/style.css 281 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 69 B
build/block-library/blocks/post-time-to-read/style.css 69 B
build/block-library/blocks/post-title/style-rtl.css 100 B
build/block-library/blocks/post-title/style.css 100 B
build/block-library/blocks/preformatted/style-rtl.css 103 B
build/block-library/blocks/preformatted/style.css 103 B
build/block-library/blocks/pullquote/editor-rtl.css 135 B
build/block-library/blocks/pullquote/editor.css 135 B
build/block-library/blocks/pullquote/style-rtl.css 335 B
build/block-library/blocks/pullquote/style.css 335 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 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 288 B
build/block-library/blocks/query-pagination/style.css 284 B
build/block-library/blocks/query-title/style-rtl.css 63 B
build/block-library/blocks/query-title/style.css 63 B
build/block-library/blocks/query/editor-rtl.css 463 B
build/block-library/blocks/query/editor.css 463 B
build/block-library/blocks/quote/style-rtl.css 222 B
build/block-library/blocks/quote/style.css 222 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/read-more/style-rtl.css 132 B
build/block-library/blocks/read-more/style.css 132 B
build/block-library/blocks/rss/editor-rtl.css 149 B
build/block-library/blocks/rss/editor.css 149 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 165 B
build/block-library/blocks/search/editor.css 165 B
build/block-library/blocks/search/style-rtl.css 408 B
build/block-library/blocks/search/style.css 406 B
build/block-library/blocks/search/theme-rtl.css 114 B
build/block-library/blocks/search/theme.css 114 B
build/block-library/blocks/separator/editor-rtl.css 146 B
build/block-library/blocks/separator/editor.css 146 B
build/block-library/blocks/separator/style-rtl.css 234 B
build/block-library/blocks/separator/style.css 234 B
build/block-library/blocks/separator/theme-rtl.css 194 B
build/block-library/blocks/separator/theme.css 194 B
build/block-library/blocks/shortcode/editor-rtl.css 474 B
build/block-library/blocks/shortcode/editor.css 474 B
build/block-library/blocks/site-logo/editor-rtl.css 489 B
build/block-library/blocks/site-logo/editor.css 489 B
build/block-library/blocks/site-logo/style-rtl.css 203 B
build/block-library/blocks/site-logo/style.css 203 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 116 B
build/block-library/blocks/site-title/editor.css 116 B
build/block-library/blocks/site-title/style-rtl.css 57 B
build/block-library/blocks/site-title/style.css 57 B
build/block-library/blocks/social-link/editor-rtl.css 184 B
build/block-library/blocks/social-link/editor.css 184 B
build/block-library/blocks/social-links/editor-rtl.css 674 B
build/block-library/blocks/social-links/editor.css 673 B
build/block-library/blocks/social-links/style-rtl.css 1.4 kB
build/block-library/blocks/social-links/style.css 1.39 kB
build/block-library/blocks/spacer/editor-rtl.css 359 B
build/block-library/blocks/spacer/editor.css 359 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/editor-rtl.css 433 B
build/block-library/blocks/table/editor.css 433 B
build/block-library/blocks/table/style-rtl.css 651 B
build/block-library/blocks/table/style.css 650 B
build/block-library/blocks/table/theme-rtl.css 157 B
build/block-library/blocks/table/theme.css 157 B
build/block-library/blocks/tag-cloud/style-rtl.css 251 B
build/block-library/blocks/tag-cloud/style.css 253 B
build/block-library/blocks/template-part/editor-rtl.css 404 B
build/block-library/blocks/template-part/editor.css 404 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 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 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 99 B
build/block-library/blocks/verse/style.css 99 B
build/block-library/blocks/video/editor-rtl.css 552 B
build/block-library/blocks/video/editor.css 555 B
build/block-library/blocks/video/style-rtl.css 179 B
build/block-library/blocks/video/style.css 179 B
build/block-library/blocks/video/theme-rtl.css 139 B
build/block-library/blocks/video/theme.css 139 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.12 kB
build/block-library/common.css 1.12 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/reset-rtl.css 478 B
build/block-library/reset.css 478 B
build/block-library/theme-rtl.css 698 B
build/block-library/theme.css 703 B
build/block-serialization-default-parser/index.min.js 1.13 kB
build/block-serialization-spec-parser/index.min.js 2.83 kB
build/blocks/index.min.js 51.1 kB
build/commands/index.min.js 14.7 kB
build/commands/style-rtl.css 1.1 kB
build/commands/style.css 1.09 kB
build/components/style-rtl.css 11.7 kB
build/components/style.css 11.7 kB
build/compose/index.min.js 12.4 kB
build/core-data/index.min.js 16.3 kB
build/customize-widgets/index.min.js 12.2 kB
build/customize-widgets/style-rtl.css 1.41 kB
build/customize-widgets/style.css 1.41 kB
build/data-controls/index.min.js 663 B
build/data/index.min.js 8.68 kB
build/date/index.min.js 40.4 kB
build/deprecated/index.min.js 518 B
build/dom-ready/index.min.js 336 B
build/dom/index.min.js 4.72 kB
build/edit-post/classic-rtl.css 571 B
build/edit-post/classic.css 571 B
build/edit-widgets/index.min.js 17.3 kB
build/edit-widgets/style-rtl.css 4.56 kB
build/edit-widgets/style.css 4.56 kB
build/editor/index.min.js 45.9 kB
build/editor/style-rtl.css 3.49 kB
build/editor/style.css 3.48 kB
build/element/index.min.js 4.95 kB
build/escape-html/index.min.js 548 B
build/format-library/index.min.js 7.26 kB
build/format-library/style-rtl.css 557 B
build/format-library/style.css 556 B
build/hooks/index.min.js 1.66 kB
build/html-entities/index.min.js 454 B
build/i18n/index.min.js 3.79 kB
build/is-shallow-equal/index.min.js 535 B
build/keyboard-shortcuts/index.min.js 1.79 kB
build/keycodes/index.min.js 1.94 kB
build/list-reusable-blocks/index.min.js 2.14 kB
build/list-reusable-blocks/style-rtl.css 865 B
build/list-reusable-blocks/style.css 865 B
build/media-utils/index.min.js 2.99 kB
build/notices/index.min.js 977 B
build/plugins/index.min.js 1.94 kB
build/preferences-persistence/index.min.js 2.23 kB
build/preferences/index.min.js 1.35 kB
build/primitives/index.min.js 960 B
build/priority-queue/index.min.js 1.52 kB
build/react-i18n/index.min.js 702 B
build/react-refresh-entry/index.min.js 8.44 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.75 kB
build/reusable-blocks/index.min.js 2.26 kB
build/reusable-blocks/style-rtl.css 265 B
build/reusable-blocks/style.css 265 B
build/rich-text/index.min.js 11.1 kB
build/server-side-render/index.min.js 2.09 kB
build/shortcode/index.min.js 1.52 kB
build/style-engine/index.min.js 1.55 kB
build/token-list/index.min.js 650 B
build/url/index.min.js 3.74 kB
build/vendors/inert-polyfill.min.js 2.48 kB
build/vendors/react-dom.min.js 41.8 kB
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 1.09 kB
build/warning/index.min.js 280 B
build/widgets/index.min.js 7.3 kB
build/widgets/style-rtl.css 1.18 kB
build/widgets/style.css 1.18 kB
build/wordcount/index.min.js 1.06 kB

compressed-size-action

@andrewserong
Copy link
Contributor Author

Just pinged a few folks for visibility on this exploration. I'm not too sure how well it'll hold up, as one of the issues I've run into with the slightly offset position of the block icon for each nesting level is that the drag and drop indicator line is no longer lined up nicely across nesting levels. I've nudged the positioning slightly here, but very happy for any ideas on how to improve it (or ideas about the nestling level spacing in general):

2023-04-05.17.21.44.mp4

@andrewserong andrewserong requested a review from scruffian April 5, 2023 07:25
@github-actions
Copy link

github-actions bot commented Apr 5, 2023

Flaky tests detected in 3e2ab5f.
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/4615985561
📝 Reported issues:

@ramonjd
Copy link
Member

ramonjd commented Apr 6, 2023

I think this is a huge improvement visually. 🙇

For humungous lists, would it eventually run into the same problem? I tried and it seems to hug the right side of the column nicely.

Screenshot 2023-04-06 at 10 37 39 am

drag and drop indicator line is no longer lined up nicely across nesting levels

I can't find where the indicator line is to test it, but what if we were to increase the gap between the parent/sibling at the insertion point, maybe with animation too, to indicate the drop placeholder onhover. Does that make sense?

@andrewserong
Copy link
Contributor Author

Thanks for taking a look @ramonjd!

For humungous lists, would it eventually run into the same problem? I tried and it seems to hug the right side of the column nicely.

It looks like your screenshot is from trunk? At that level of nesting there should be a bit more breathing room at the right hand side. With really huge lists, since the nesting is currently capped at 8 levels, there should be a bit more room, without blocks ever getting that close to the line at the right (so the block settings button should always be visible) 🤔. Once we start nesting beyond 8 levels, it'll stay at the same level visually. The hope is that if the spacing is a little denser, then we'll be less likely to encounter the need for scrolling horizontally (as in #49508 (review)), though it'd still be good for it to scroll when/if it ultimately needs to.

I can't find where the indicator line is to test it, but what if we were to increase the gap between the parent/sibling at the insertion point, maybe with animation too, to indicate the drop placeholder onhover. Does that make sense?

I think that makes sense — do you mean adjusting the vertical spacing between two blocks when you're hovering between them? I'd love to have a play with that, too, but likely separate to this PR as it gets a bit complex. Currently the drop indicator is rendered as a popover, so we'd need some additional code that adjusted spacing within the list view when hovered, as the drop indicator isn't "really" in the DOM along with the rest of the list view.

@ramonjd
Copy link
Member

ramonjd commented Apr 6, 2023

It looks like your screenshot is from trunk?

Ho! Sorry, I uploaded the wrong screen grab. Thanks for catching it. I updated it in the comment.

do you mean adjusting the vertical spacing between two blocks when you're hovering between them?

Exactly! You expressed it 100 x better 😄

@andrewserong
Copy link
Contributor Author

Exactly!

Great! I'll have a hack around in a separate PR next week — will let you know how I go!

@andrewserong andrewserong marked this pull request as ready for review April 6, 2023 04:26
@andrewserong andrewserong requested a review from ellatrix as a code owner April 6, 2023 04:26
@apeatling
Copy link
Contributor

I think this is a big improvement so +1 from me. The one thing I noticed was the first level below the root is tighter than subsequent levels:

Screenshot 2023-04-06 at 11 05 22 AM

@andrewserong
Copy link
Contributor Author

The one thing I noticed was the first level below the root is tighter than subsequent levels:

Oh, great catch @apeatling! I'll fix it up.

@andrewserong
Copy link
Contributor Author

Update: in 08f782f I've resolved the spacing issue with the first level indent. The current state of this PR:

  • Each indent level winds up being 16px (I've preserved the calculations so that it's still calculated based on specific values so that if we want to adjust things in the future, it's all still relative to block icon size)
  • I've tweaked the drop indicator positioning so that the line begins at the right edge of the parent/root block's block icon — this feels like a decent enough trade-off for positioning to me, but happy for feedback there

Here's how it's looking for a deeply nested list:

image

I think this PR is probably ready for a final design review now. Thanks for the feedback!

@andrewserong andrewserong requested a review from jasmussen April 11, 2023 05:27
@jasmussen
Copy link
Contributor

Thanks so much for the PR, the attention to detail on the list view is much appreciated, it's a crucial UI to get right!

As I noted in #49508 (comment), I'm not convinced this is a great solution, however. It optimizes for having very deep levels of nesting, at the expense of things lining up for the cases with very little nesting. As we increasingly explore auto collapsing, contentOnly locked blocks and patterns, and even the wp-pattern block, these deep nesting levels are hopefully going to be more rare occurrences.

That's not to say deep nesting shouldn't be fixed. But without a scrollbar or otherwise, even this improvement would eventually run into the edge. In that light, I'd focus on getting the on-hover customized scrollbar from #49508 working as intended. This is already in place in the site editor templates list, on not-so-tall screens:

scrollbar

Resizing the list view would also be a small ergonomic improvemment that could be useful:

resizing

@andrewserong
Copy link
Contributor Author

andrewserong commented Apr 12, 2023

I'm not convinced this is a great solution

Thanks for taking a look at this @jasmussen, and for the clarity, it's very much appreciated as always! To my eyes, I personally prefer optimising for deeply nested lists, because they seem to be much more common in the site editor where we have more complex layouts within nested header and footer template parts. But I'm happy to disagree and commit, and I do see that the tighter spacing in this PR breaks the nice visual alignment on trunk, which could also make nested lists harder for people to work with when the nesting is more subtle.

I'll close out this PR for now and switch over to other list view tasks, I also really like the idea of being able to drag the size of the list view sidebar, that'd be a cool one to play with 👍

@andrewserong
Copy link
Contributor Author

Just one more thought about this line:

But without a scrollbar or otherwise, even this improvement would eventually run into the edge.

The list view currently has a capped depth limit of 8 levels, so in practice, it seems the spacing in this PR avoids kicking over into a horizontal scrollbar when we reach the max depth limit. At that point, everything gets displayed at a single level, as on trunk. The included test markup in the PR description goes to 9 levels deep, in case anyone would like to play around with it further.

From my perspective, I find horizontal scrollbars quite frustrating to work with, especially for users using a mousewheel that only scrolls vertically, so they'd be good to avoid if we can. Still, I do like the idea of seeing if we can add a ResizeHandle to the list view sidebar, so it's definitely worth playing with.

@jasmussen
Copy link
Contributor

We might indeed want to come back to this one! As a personal opinion I think it might be useful to start with the other options first, see how far that takes us first. 🙏

@jameskoster
Copy link
Contributor

I'm conflicted on this one :) For me it's easier to use List View with the reduced spacing, especially when there are many levels of nesting which is common in the site editor. I appreciate increasing the depth cap as well. But it cannot be denied: the alignment isn't as easy on the eye.

A resize handle would help, but the cost is a reduced canvas footprint which seems like a pretty meaningful trade-off. I feel we should be shooting for maximum economy when it comes to the space that List View occupies. Increasing the width should be a last resort for users.

@jasmussen
Copy link
Contributor

All of those points are good and I agree — I think my main suggestion is that accepting this alignment tradeoff feels more appropriate to do once we've explored the other improvements on deck. Not just the scrollbar and resize handle, but also the hopefully across the board reduction in nesting levels we can get through the contentOnly editing model, pattern block, focus mode, etc. If all those successfully reduce the times you see deep nesting levels, we might not need to accept this trade-off, which very much optimizes for the present.

@andrewserong
Copy link
Contributor Author

Thanks for the continued discussion here! I very much agree that it's important to get the tradeoffs right.

Let's keep this PR in the back of our minds as we make further improvements — it'll be an easy one to dust off if we decide we'd like to proceed with it a little further down the track 🙂

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] List View Menu item in the top toolbar to select blocks from a list of links. [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants