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: try respecting a max width #35605

Closed
wants to merge 2 commits into from
Closed

Conversation

gwwar
Copy link
Contributor

@gwwar gwwar commented Oct 13, 2021

In #35230 we noticed that the persistent list view may expand past 350px in width for the secondary sidebar. This can happen if a block has a particularly long label, or if items are nested deeply.

It'd be ideal if the secondary sidebar width can remain consistent in width. In a follow up being able to resize this to an arbitrary width may make sense too.

The current max nesting depth is 8. We can see how this behaves in the following video. Any items nested past this point end up on the same visual level. Toggling expansion may change width, but with a max nesting depth it's more difficult to take up all the editor screen space.

CleanShot.2021-10-13.at.10.56.00.mp4

Some challenges I found so far:

  • Adding a max-width to the contents pane (and overflow-x scroll) makes it very difficult to access the block list options. So this might not be an ideal path.
  • Flex puzzles with text overflow :D (Though I suspect we can't for i18n unfriendliness).
  • We could perhaps truncate block labels. We already do this for named reusable blocks and template parts:

CleanShot 2021-10-13 at 12 01 44@2x

This is just an early exploration, but feel free to explore and push directly to the branch if y'all have ideas cc @jasmussen @jameskoster

@gwwar gwwar self-assigned this Oct 13, 2021
@github-actions
Copy link

github-actions bot commented Oct 13, 2021

Size Change: +388 B (0%)

Total Size: 1.07 MB

Filename Size Change
build/block-editor/style-rtl.css 14 kB +172 B (+1%)
build/block-editor/style.css 14 kB +175 B (+1%)
build/edit-post/style-rtl.css 7.13 kB +10 B (0%)
build/edit-post/style.css 7.13 kB +10 B (0%)
build/edit-site/style-rtl.css 5.57 kB +11 B (0%)
build/edit-site/style.css 5.57 kB +10 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 931 B
build/admin-manifest/index.min.js 1.09 kB
build/annotations/index.min.js 2.7 kB
build/api-fetch/index.min.js 2.21 kB
build/autop/index.min.js 2.08 kB
build/blob/index.min.js 459 B
build/block-directory/index.min.js 6.2 kB
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/default-editor-styles-rtl.css 378 B
build/block-editor/default-editor-styles.css 378 B
build/block-editor/index.min.js 134 kB
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 65 B
build/block-library/blocks/archives/style.css 65 B
build/block-library/blocks/audio/editor-rtl.css 58 B
build/block-library/blocks/audio/editor.css 58 B
build/block-library/blocks/audio/style-rtl.css 111 B
build/block-library/blocks/audio/style.css 111 B
build/block-library/blocks/audio/theme-rtl.css 125 B
build/block-library/blocks/audio/theme.css 125 B
build/block-library/blocks/block/editor-rtl.css 161 B
build/block-library/blocks/block/editor.css 161 B
build/block-library/blocks/button/editor-rtl.css 470 B
build/block-library/blocks/button/editor.css 470 B
build/block-library/blocks/button/style-rtl.css 549 B
build/block-library/blocks/button/style.css 549 B
build/block-library/blocks/buttons/editor-rtl.css 309 B
build/block-library/blocks/buttons/editor.css 309 B
build/block-library/blocks/buttons/style-rtl.css 317 B
build/block-library/blocks/buttons/style.css 317 B
build/block-library/blocks/calendar/style-rtl.css 207 B
build/block-library/blocks/calendar/style.css 207 B
build/block-library/blocks/categories/editor-rtl.css 84 B
build/block-library/blocks/categories/editor.css 83 B
build/block-library/blocks/categories/style-rtl.css 79 B
build/block-library/blocks/categories/style.css 79 B
build/block-library/blocks/code/style-rtl.css 90 B
build/block-library/blocks/code/style.css 90 B
build/block-library/blocks/code/theme-rtl.css 131 B
build/block-library/blocks/code/theme.css 131 B
build/block-library/blocks/columns/editor-rtl.css 206 B
build/block-library/blocks/columns/editor.css 205 B
build/block-library/blocks/columns/style-rtl.css 497 B
build/block-library/blocks/columns/style.css 496 B
build/block-library/blocks/cover/editor-rtl.css 546 B
build/block-library/blocks/cover/editor.css 547 B
build/block-library/blocks/cover/style-rtl.css 1.17 kB
build/block-library/blocks/cover/style.css 1.17 kB
build/block-library/blocks/embed/editor-rtl.css 488 B
build/block-library/blocks/embed/editor.css 488 B
build/block-library/blocks/embed/style-rtl.css 417 B
build/block-library/blocks/embed/style.css 417 B
build/block-library/blocks/embed/theme-rtl.css 124 B
build/block-library/blocks/embed/theme.css 124 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 255 B
build/block-library/blocks/file/style.css 255 B
build/block-library/blocks/file/view.min.js 322 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 977 B
build/block-library/blocks/gallery/editor.css 982 B
build/block-library/blocks/gallery/style-rtl.css 1.6 kB
build/block-library/blocks/gallery/style.css 1.59 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 159 B
build/block-library/blocks/group/editor.css 159 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 114 B
build/block-library/blocks/heading/style.css 114 B
build/block-library/blocks/home-link/style-rtl.css 247 B
build/block-library/blocks/home-link/style.css 247 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 731 B
build/block-library/blocks/image/editor.css 730 B
build/block-library/blocks/image/style-rtl.css 502 B
build/block-library/blocks/image/style.css 505 B
build/block-library/blocks/image/theme-rtl.css 124 B
build/block-library/blocks/image/theme.css 124 B
build/block-library/blocks/latest-comments/style-rtl.css 284 B
build/block-library/blocks/latest-comments/style.css 284 B
build/block-library/blocks/latest-posts/editor-rtl.css 137 B
build/block-library/blocks/latest-posts/editor.css 137 B
build/block-library/blocks/latest-posts/style-rtl.css 528 B
build/block-library/blocks/latest-posts/style.css 527 B
build/block-library/blocks/list/style-rtl.css 94 B
build/block-library/blocks/list/style.css 94 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 493 B
build/block-library/blocks/media-text/style.css 490 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 568 B
build/block-library/blocks/navigation-link/editor.css 570 B
build/block-library/blocks/navigation-link/style-rtl.css 94 B
build/block-library/blocks/navigation-link/style.css 94 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 300 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation-submenu/style-rtl.css 195 B
build/block-library/blocks/navigation-submenu/style.css 195 B
build/block-library/blocks/navigation-submenu/view.min.js 343 B
build/block-library/blocks/navigation/editor-rtl.css 1.71 kB
build/block-library/blocks/navigation/editor.css 1.71 kB
build/block-library/blocks/navigation/style-rtl.css 1.64 kB
build/block-library/blocks/navigation/style.css 1.64 kB
build/block-library/blocks/navigation/view.min.js 2.74 kB
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 377 B
build/block-library/blocks/page-list/editor.css 377 B
build/block-library/blocks/page-list/style-rtl.css 198 B
build/block-library/blocks/page-list/style.css 198 B
build/block-library/blocks/paragraph/editor-rtl.css 157 B
build/block-library/blocks/paragraph/editor.css 157 B
build/block-library/blocks/paragraph/style-rtl.css 273 B
build/block-library/blocks/paragraph/style.css 273 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/style-rtl.css 140 B
build/block-library/blocks/post-comments-form/style.css 140 B
build/block-library/blocks/post-comments/style-rtl.css 360 B
build/block-library/blocks/post-comments/style.css 359 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B
build/block-library/blocks/post-excerpt/editor.css 73 B
build/block-library/blocks/post-excerpt/style-rtl.css 69 B
build/block-library/blocks/post-excerpt/style.css 69 B
build/block-library/blocks/post-featured-image/editor-rtl.css 396 B
build/block-library/blocks/post-featured-image/editor.css 397 B
build/block-library/blocks/post-featured-image/style-rtl.css 156 B
build/block-library/blocks/post-featured-image/style.css 156 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 391 B
build/block-library/blocks/post-template/style.css 392 B
build/block-library/blocks/post-terms/style-rtl.css 73 B
build/block-library/blocks/post-terms/style.css 73 B
build/block-library/blocks/post-title/style-rtl.css 60 B
build/block-library/blocks/post-title/style.css 60 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 198 B
build/block-library/blocks/pullquote/editor.css 198 B
build/block-library/blocks/pullquote/style-rtl.css 378 B
build/block-library/blocks/pullquote/style.css 378 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 262 B
build/block-library/blocks/query-pagination/editor.css 255 B
build/block-library/blocks/query-pagination/style-rtl.css 234 B
build/block-library/blocks/query-pagination/style.css 231 B
build/block-library/blocks/query/editor-rtl.css 131 B
build/block-library/blocks/query/editor.css 132 B
build/block-library/blocks/quote/style-rtl.css 187 B
build/block-library/blocks/quote/style.css 187 B
build/block-library/blocks/quote/theme-rtl.css 220 B
build/block-library/blocks/quote/theme.css 222 B
build/block-library/blocks/rss/editor-rtl.css 202 B
build/block-library/blocks/rss/editor.css 204 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 374 B
build/block-library/blocks/search/style.css 375 B
build/block-library/blocks/search/theme-rtl.css 64 B
build/block-library/blocks/search/theme.css 64 B
build/block-library/blocks/separator/editor-rtl.css 99 B
build/block-library/blocks/separator/editor.css 99 B
build/block-library/blocks/separator/style-rtl.css 250 B
build/block-library/blocks/separator/style.css 250 B
build/block-library/blocks/separator/theme-rtl.css 172 B
build/block-library/blocks/separator/theme.css 172 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 769 B
build/block-library/blocks/site-logo/editor.css 769 B
build/block-library/blocks/site-logo/style-rtl.css 165 B
build/block-library/blocks/site-logo/style.css 165 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 84 B
build/block-library/blocks/site-title/editor.css 84 B
build/block-library/blocks/social-link/editor-rtl.css 177 B
build/block-library/blocks/social-link/editor.css 177 B
build/block-library/blocks/social-links/editor-rtl.css 824 B
build/block-library/blocks/social-links/editor.css 823 B
build/block-library/blocks/social-links/style-rtl.css 1.32 kB
build/block-library/blocks/social-links/style.css 1.32 kB
build/block-library/blocks/spacer/editor-rtl.css 307 B
build/block-library/blocks/spacer/editor.css 307 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 471 B
build/block-library/blocks/table/editor.css 472 B
build/block-library/blocks/table/style-rtl.css 481 B
build/block-library/blocks/table/style.css 481 B
build/block-library/blocks/table/theme-rtl.css 188 B
build/block-library/blocks/table/theme.css 188 B
build/block-library/blocks/tag-cloud/style-rtl.css 146 B
build/block-library/blocks/tag-cloud/style.css 146 B
build/block-library/blocks/template-part/editor-rtl.css 560 B
build/block-library/blocks/template-part/editor.css 559 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 87 B
build/block-library/blocks/verse/style.css 87 B
build/block-library/blocks/video/editor-rtl.css 571 B
build/block-library/blocks/video/editor.css 572 B
build/block-library/blocks/video/style-rtl.css 173 B
build/block-library/blocks/video/style.css 173 B
build/block-library/blocks/video/theme-rtl.css 124 B
build/block-library/blocks/video/theme.css 124 B
build/block-library/common-rtl.css 815 B
build/block-library/common.css 812 B
build/block-library/editor-rtl.css 9.65 kB
build/block-library/editor.css 9.65 kB
build/block-library/index.min.js 148 kB
build/block-library/reset-rtl.css 474 B
build/block-library/reset.css 474 B
build/block-library/style-rtl.css 10.3 kB
build/block-library/style.css 10.3 kB
build/block-library/theme-rtl.css 665 B
build/block-library/theme.css 669 B
build/block-serialization-default-parser/index.min.js 1.09 kB
build/block-serialization-spec-parser/index.min.js 2.79 kB
build/blocks/index.min.js 46 kB
build/components/index.min.js 212 kB
build/components/style-rtl.css 15.3 kB
build/components/style.css 15.3 kB
build/compose/index.min.js 10.4 kB
build/core-data/index.min.js 12.4 kB
build/customize-widgets/index.min.js 11.2 kB
build/customize-widgets/style-rtl.css 1.5 kB
build/customize-widgets/style.css 1.49 kB
build/data-controls/index.min.js 614 B
build/data/index.min.js 7.1 kB
build/date/index.min.js 31.5 kB
build/deprecated/index.min.js 428 B
build/dom-ready/index.min.js 304 B
build/dom/index.min.js 4.46 kB
build/edit-navigation/index.min.js 15.4 kB
build/edit-navigation/style-rtl.css 3.76 kB
build/edit-navigation/style.css 3.76 kB
build/edit-post/classic-rtl.css 492 B
build/edit-post/classic.css 494 B
build/edit-post/index.min.js 29.4 kB
build/edit-site/index.min.js 30 kB
build/edit-widgets/index.min.js 15.8 kB
build/edit-widgets/style-rtl.css 4.12 kB
build/edit-widgets/style.css 4.13 kB
build/editor/index.min.js 37.5 kB
build/editor/style-rtl.css 3.78 kB
build/editor/style.css 3.77 kB
build/element/index.min.js 3.21 kB
build/escape-html/index.min.js 517 B
build/format-library/index.min.js 5.93 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.55 kB
build/html-entities/index.min.js 424 B
build/i18n/index.min.js 3.6 kB
build/is-shallow-equal/index.min.js 501 B
build/keyboard-shortcuts/index.min.js 1.72 kB
build/keycodes/index.min.js 1.3 kB
build/list-reusable-blocks/index.min.js 1.85 kB
build/list-reusable-blocks/style-rtl.css 838 B
build/list-reusable-blocks/style.css 838 B
build/media-utils/index.min.js 2.92 kB
build/notices/index.min.js 845 B
build/nux/index.min.js 2.03 kB
build/nux/style-rtl.css 747 B
build/nux/style.css 743 B
build/plugins/index.min.js 1.83 kB
build/primitives/index.min.js 921 B
build/priority-queue/index.min.js 582 B
build/react-i18n/index.min.js 671 B
build/redux-routine/index.min.js 2.63 kB
build/reusable-blocks/index.min.js 2.19 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 10.6 kB
build/server-side-render/index.min.js 1.52 kB
build/shortcode/index.min.js 1.48 kB
build/token-list/index.min.js 562 B
build/url/index.min.js 1.74 kB
build/viewport/index.min.js 1.02 kB
build/warning/index.min.js 248 B
build/widgets/index.min.js 7.11 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.04 kB

compressed-size-action

@jasmussen
Copy link
Contributor

Here I am grouping stuff until it's 8 nesting levels deep and starts stacking:

grouping

Nice, this feels like a good safety valve. It might even be all we need to do to handle this, considering it'll likely be a 20% edgecase that needs this guardrail. If we need to do more, we can look at collapsing/hiding ancestors smartly, or just handling some horizontal scroll.

I don't know that this needs any additional tweaks. What do you feel is missing to land this?

@gwwar
Copy link
Contributor Author

gwwar commented Oct 14, 2021

I don't know that this needs any additional tweaks. What do you feel is missing to land this?

The site editor has a number of blocks with long labels, so the width of the sidebar can change pretty easily when we nest only 2 or 3 in. For example: "Query Pagination Previous". Other languages like German probably push this out even further, so I think we do need to help limit the block label size.

@jasmussen
Copy link
Contributor

Ah right, good point. I think we might need some eliding (text-overflow: elllipsis;), I'll take a stab at that.

@jameskoster
Copy link
Contributor

It may just be me but I find the stacking very confusing because it eliminates all visual hierarchy cues. In the following gif none of the clicks behave in a way that feels predictable:

If there is a way to preserve that visual hierarchy – even its a case of reducing the indentation to a few pixels – I think that would be enormously helpful.

@gwwar
Copy link
Contributor Author

gwwar commented Oct 14, 2021

If there is a way to preserve that visual hierarchy

We don't limit nesting programmatically so if this is something we favor, we'll need to think through horizontal scrolling. One thing we should try to avoid is having the sidebar take up so much space that the main editor panel is unusable.

Modifying the limit to 4 was just an example. I'm fine with keeping this at 8, but I suspect we do want to help limit label length.

@jameskoster
Copy link
Contributor

We don't limit nesting programmatically so if this is something we favor, we'll need to think through horizontal scrolling.

Horizontal scrolling is worth exploring as an alternative to stacking I think. I do worry it will also feel a little disorienting though.

Is it worth asking the question: do we really need to visually support extreme nesting? In Figma (for example) they just hide the contents altogether:

nesting.mp4

Not ideal, but how often do folks really need to nest that deeply? Maybe we can mitigate how soon this effect occurs by revisiting things like spacing / icon size and further optimising the use of space.

Ultimately, the more I think about this the more a user-customisable width (probably with sensible min / max values) feels like the best all-round solution.

@gwwar
Copy link
Contributor Author

gwwar commented Oct 14, 2021

do we really need to visually support extreme nesting?

If it's possible people will do it ;) I think a hard overflow:none is a little too unfriendly for the extreme edge case. If need be we could try to pair up a horizontal overflow with resizing if folks feel pretty strongly.

Note that I am seeing items go over 350px width in the site editor at a more reasonable 2-3 depth.

@jasmussen
Copy link
Contributor

Just to be sure I'm getting this right: the vertical stacking of items will only ever happen if you nest 8+ levels deep, correct? Or will it also happen if labels are really really long?

In case of the former, stacking feels like a decent alternative, or at least a simple holdover, to both horizontal scrollbars and more advanced behaviors.

@jameskoster
Copy link
Contributor

the vertical stacking of items will only ever happen if you nest 8+ levels deep, correct?

On trunk that is correct, on this PR it occurs at 4 levels.

For me the stacked approach feels very awkward to use, at any level. One of the key components of trees like this is the visual communication of hierarchy, so when it no longer does that effectively the usability degrades a lot. I'm not sure I've ever seen a file tree UI do this 🤔

Perhaps it's worth trying the horizontal scroll with no stacking?

@gwwar
Copy link
Contributor Author

gwwar commented Oct 15, 2021

To make this less confusing I can drop the stacking change (8->4). I've updated stacking to an arbitrary upper limit of 15 (that most normal people won't hit), some CSS limitations make it more difficult to let us support an arbitrary depth.

Perhaps it's worth trying the horizontal scroll with no stacking?

I think it's worth a shot!

One of the challenges with this is that actions were added into the ellipsis menu which is aligned to the right. So if we do have a horizontal scrollbar, then currently folks will need to scroll to the right to access actions. It's something to think through.

In some native desktop applications, resizable sidebars don't have this problem since they rely on right-click for additional options vs a visual button. (I'm not suggesting we add right-click but wanted to leave a note).

@jasmussen
Copy link
Contributor

One of the challenges with this is that actions were added into the ellipsis menu which is aligned to the right. So if we do have a horizontal scrollbar, then currently folks will need to scroll to the right to access actions. It's something to think through.

This feels like a really important point.

// Indent is a full icon size, plus 4px which optically aligns child icons to the text label above.
$block-navigation-max-indent: 8;
$block-navigation-max-indent: 15;
Copy link
Contributor Author

Choose a reason for hiding this comment

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

If we want to allow arbitrary levels, it'd be ideal to be able to do some margin-left: calc( $icon-size * $aria-level ). Unfortunately it doesn't look like https://developer.mozilla.org/en-US/docs/Web/CSS/attr() has good support, so we bump this to a highish number that doesn't generate too much css from:

@for $i from 0 to $block-navigation-max-indent {
	.block-editor-list-view-leaf[aria-level="#{ $i + 1 }"] .block-editor-list-view__expander {
		@if $i - 1 >= 0 {
			margin-left: ( $icon-size * $i ) + 4 * ($i - 1);
		}
		@else {
			margin-left: ( $icon-size * $i );
		}
	}
}

@gwwar
Copy link
Contributor Author

gwwar commented Oct 15, 2021

Interesting, there's also named labels. I'll rebase in a bit with trunk after I finish up some other work.

CleanShot 2021-10-15 at 09 45 25@2x

@gwwar
Copy link
Contributor Author

gwwar commented Oct 15, 2021

Rebased with trunk to get the latest list view label changes 👍

@jameskoster
Copy link
Contributor

For the ellipsis, we can try making it sticky so that regardless of scroll point it's always easily accessible.

I made a quick prototype to try this and horizontal scrolling:

You do end up with these peculiar "empty looking" rows like the Paragraph at the bottom of the tree, but that is inevitable with infinite nesting if we preserve the visual hierarchy. To (somewhat) remedy that we might reduce the spacing of the rows themselves:

Screenshot 2021-10-18 at 12 36 38

(Left is current spacing, right is an aggressively reduced alternative with small icons).

The alignment isn't as neat, but that trade-off is probably worth it if the usability improves.

@getdave
Copy link
Contributor

getdave commented Mar 15, 2022

@jameskoster @jasmussen We're hitting the same problems in #39290. I wonder if the controls could show overlayed on top of the current item only on hover.

@jasmussen
Copy link
Contributor

How do you mean, overlaid?

Coming back to this, I think horizontal scrolling, and other mechanisms to minimize the chance of the scrollbar appearing (such as eliding text if too long) are probably good starting points.

@jameskoster
Copy link
Contributor

I wonder if the controls could show overlayed on top of the current item only on hover.

Presuming by 'controls' you mean the movers and ellipsis?

If they functioned like the ellipsis in this gif I think that might work ok:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants