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

Tree Grid: use framer motion for all animations #33765

Closed
wants to merge 7 commits into from

Conversation

gwwar
Copy link
Contributor

@gwwar gwwar commented Jul 29, 2021

This PR updates the TreeGrid component to use framer-motion. When children are added/removed or deleted, we can note that these actions should be animated from one state to another with a simple layout prop.

This enables behaviors like:

Animating on move (existing behavior)

movers.mp4

Animate expand/collapse of list items (new)

expand-collapse.mp4

Animations of new/removed nodes. (new) suppressed

This is more of an unintended side effect but I'll play with this, we'll want to reduce transitions or turn off animation here I think. I turned off this interaction

animate.nodes.mp4

TODO:

  • Fix exit animation or remove the setting (each item needs a key)
  • Don't toggle opacity for initial sidebar toggle (and adding and removing nodes if possible).
  • Respects prefers reduce motion by turning off all animation
  • Remove the now unneeded leaf.js class
  • Performance audit
  • Port or turn off layout when dragging

cc heads up @talldan since I know you're also looking at list view improvements

@gwwar gwwar added [Type] Enhancement A suggestion for improvement. [Package] Components /packages/components [Package] Block editor /packages/block-editor labels Jul 29, 2021
@gwwar gwwar self-assigned this Jul 29, 2021
@github-actions
Copy link

github-actions bot commented Jul 29, 2021

Size Change: +2.15 kB (0%)

Total Size: 1.03 MB

Filename Size Change
build/block-editor/index.min.js 118 kB -54 B (0%)
build/block-editor/style-rtl.css 13.9 kB -10 B (0%)
build/block-editor/style.css 13.8 kB -10 B (0%)
build/components/index.min.js 211 kB +2.21 kB (+1%)
build/edit-post/index.min.js 28.4 kB +7 B (0%)
build/edit-site/index.min.js 25.8 kB +9 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.19 kB
build/autop/index.min.js 2.08 kB
build/blob/index.min.js 459 B
build/block-directory/index.min.js 6.21 kB
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 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 474 B
build/block-library/blocks/button/editor.css 474 B
build/block-library/blocks/button/style-rtl.css 605 B
build/block-library/blocks/button/style.css 604 B
build/block-library/blocks/buttons/editor-rtl.css 315 B
build/block-library/blocks/buttons/editor.css 315 B
build/block-library/blocks/buttons/style-rtl.css 370 B
build/block-library/blocks/buttons/style.css 370 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 194 B
build/block-library/blocks/columns/editor.css 193 B
build/block-library/blocks/columns/style-rtl.css 474 B
build/block-library/blocks/columns/style.css 475 B
build/block-library/blocks/cover/editor-rtl.css 666 B
build/block-library/blocks/cover/editor.css 670 B
build/block-library/blocks/cover/style-rtl.css 1.23 kB
build/block-library/blocks/cover/style.css 1.23 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 400 B
build/block-library/blocks/embed/style.css 400 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 707 B
build/block-library/blocks/gallery/editor.css 706 B
build/block-library/blocks/gallery/style-rtl.css 1.05 kB
build/block-library/blocks/gallery/style.css 1.05 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 93 B
build/block-library/blocks/group/theme.css 93 B
build/block-library/blocks/heading/editor-rtl.css 152 B
build/block-library/blocks/heading/editor.css 152 B
build/block-library/blocks/heading/style-rtl.css 76 B
build/block-library/blocks/heading/style.css 76 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 283 B
build/block-library/blocks/html/editor.css 284 B
build/block-library/blocks/image/editor-rtl.css 728 B
build/block-library/blocks/image/editor.css 728 B
build/block-library/blocks/image/style-rtl.css 482 B
build/block-library/blocks/image/style.css 487 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 63 B
build/block-library/blocks/list/style.css 63 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 488 B
build/block-library/blocks/media-text/style.css 485 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 474 B
build/block-library/blocks/navigation-link/editor.css 474 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/editor-rtl.css 1.69 kB
build/block-library/blocks/navigation/editor.css 1.69 kB
build/block-library/blocks/navigation/style-rtl.css 1.65 kB
build/block-library/blocks/navigation/style.css 1.64 kB
build/block-library/blocks/navigation/view.min.js 2.52 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 310 B
build/block-library/blocks/page-list/editor.css 310 B
build/block-library/blocks/page-list/style-rtl.css 242 B
build/block-library/blocks/page-list/style.css 242 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 248 B
build/block-library/blocks/paragraph/style.css 248 B
build/block-library/blocks/post-author/editor-rtl.css 210 B
build/block-library/blocks/post-author/editor.css 210 B
build/block-library/blocks/post-author/style-rtl.css 182 B
build/block-library/blocks/post-author/style.css 181 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-content/editor-rtl.css 138 B
build/block-library/blocks/post-content/editor.css 138 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 412 B
build/block-library/blocks/post-featured-image/editor.css 412 B
build/block-library/blocks/post-featured-image/style-rtl.css 143 B
build/block-library/blocks/post-featured-image/style.css 143 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 378 B
build/block-library/blocks/post-template/style.css 379 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 361 B
build/block-library/blocks/pullquote/style.css 360 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 270 B
build/block-library/blocks/query-pagination/editor.css 262 B
build/block-library/blocks/query-pagination/style-rtl.css 168 B
build/block-library/blocks/query-pagination/style.css 168 B
build/block-library/blocks/query-title/editor-rtl.css 85 B
build/block-library/blocks/query-title/editor.css 85 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 169 B
build/block-library/blocks/quote/style.css 169 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 462 B
build/block-library/blocks/site-logo/editor.css 464 B
build/block-library/blocks/site-logo/style-rtl.css 153 B
build/block-library/blocks/site-logo/style.css 153 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 165 B
build/block-library/blocks/social-link/editor.css 165 B
build/block-library/blocks/social-links/editor-rtl.css 812 B
build/block-library/blocks/social-links/editor.css 811 B
build/block-library/blocks/social-links/style-rtl.css 1.33 kB
build/block-library/blocks/social-links/style.css 1.33 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 636 B
build/block-library/blocks/template-part/editor.css 635 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/term-description/editor-rtl.css 90 B
build/block-library/blocks/term-description/editor.css 90 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 832 B
build/block-library/common.css 830 B
build/block-library/editor-rtl.css 9.38 kB
build/block-library/editor.css 9.37 kB
build/block-library/index.min.js 146 kB
build/block-library/reset-rtl.css 527 B
build/block-library/reset.css 527 B
build/block-library/style-rtl.css 9.78 kB
build/block-library/style.css 9.79 kB
build/block-library/theme-rtl.css 688 B
build/block-library/theme.css 692 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 47 kB
build/components/style-rtl.css 15.7 kB
build/components/style.css 15.8 kB
build/compose/index.min.js 10.2 kB
build/core-data/index.min.js 12.3 kB
build/customize-widgets/index.min.js 10.4 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.03 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.53 kB
build/edit-navigation/index.min.js 13.4 kB
build/edit-navigation/style-rtl.css 3.1 kB
build/edit-navigation/style.css 3.1 kB
build/edit-post/classic-rtl.css 492 B
build/edit-post/classic.css 494 B
build/edit-post/style-rtl.css 7.18 kB
build/edit-post/style.css 7.17 kB
build/edit-site/style-rtl.css 5.01 kB
build/edit-site/style.css 5.01 kB
build/edit-widgets/index.min.js 15.9 kB
build/edit-widgets/style-rtl.css 4.01 kB
build/edit-widgets/style.css 4.02 kB
build/editor/index.min.js 37.5 kB
build/editor/style-rtl.css 3.92 kB
build/editor/style.css 3.91 kB
build/element/index.min.js 3.16 kB
build/escape-html/index.min.js 517 B
build/format-library/index.min.js 5.36 kB
build/format-library/style-rtl.css 668 B
build/format-library/style.css 669 B
build/hooks/index.min.js 1.55 kB
build/html-entities/index.min.js 424 B
build/i18n/index.min.js 3.59 kB
build/is-shallow-equal/index.min.js 501 B
build/keyboard-shortcuts/index.min.js 1.49 kB
build/keycodes/index.min.js 1.25 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.88 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.28 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 10.5 kB
build/server-side-render/index.min.js 1.32 kB
build/shortcode/index.min.js 1.48 kB
build/token-list/index.min.js 562 B
build/url/index.min.js 1.72 kB
build/viewport/index.min.js 1.02 kB
build/warning/index.min.js 248 B
build/widgets/index.min.js 6.27 kB
build/widgets/style-rtl.css 1.04 kB
build/widgets/style.css 1.04 kB
build/wordcount/index.min.js 1.04 kB

compressed-size-action

@gwwar gwwar force-pushed the update/tree-grid-animation branch 2 times, most recently from 5060cbe to 7481f98 Compare July 30, 2021 20:45
@gwwar
Copy link
Contributor Author

gwwar commented Jul 30, 2021

To help keep scope down, I think we'll want to tackle drag refactoring in another PR.

The main blocker I'm seeing at the moment is that typing speed is quite affected with the persistent list view open. Going to profile a bit to see if I spot anything.

@gwwar gwwar force-pushed the update/tree-grid-animation branch from f77e949 to 6bdf425 Compare July 30, 2021 22:03
@gwwar
Copy link
Contributor Author

gwwar commented Jul 30, 2021

I ended up using memo on the ListViewSidebar to avoid the performance hit while typing. Previously I was seeing ~100ms on keypress vs 30-40ms. I haven't noticed any broken functionality so far (most child components appear to be driven from our data stores) but folks are welcome to try and break this branch.

As a reminder, we should memo carefully, but I do think this is a good candidate since it renders often (on every keypress, re-renders with the same props, and is medium sized (on my machine it takes around 50ms to resolve).

I'll focus on tidying up animations next week.

@gwwar gwwar requested a review from jasmussen August 2, 2021 18:55
@jasmussen
Copy link
Contributor

This is just beautiful, thanks so much for tackling animation with such care! Here's a "before":

before

Here's what I see in this branch:

after

Just lovely. Specifically it becomes very clear here how framer treats the animation as a whole sequence of events where you scrub forwards and backwards on a timeline, as opposed to much CSS animation which is often bluntly toggled off or on. This is especially visible when you expand a node, then quickly collapse the group again before the animation has finished. This is great and really speaks to how animation can help reinforce points of origins and destinations in the user experience, rather than just be decorative.

It also adheres to the most important rules of thumb I have for animation (many of which I compiled after listening to this wonderful podcast):

  • Animations should nearly always be fast, so it doesn't make the experience feel slow.
  • Animations should not be blocking: you should never have to wait for an animation to finish in order to do something.
  • As a baseline: animations should all respect the "prefers reduced motion".

If those rules of thumbs are met, I find that there's almost no aspect of an interface that can't benefit from well-done animation. Everything from icons that animate (such as a check drawing itself when you click a checkbox) to live feedback in the canvas when hovering or moving. When done well, animation like this can help reinforces the behavior of elements, can give feedback on success or failure, and ultimately help orient you almost in a way similar to how a focus style can help you find your place.

One question: when I open the panel initially, items fade in. I get the feeling that we get that fade "for free", as it's part of the lifycle of the animation. Is that something we can turn off somewhat easily, though? If we can, that would make it consistent with other panels that open, whose content also doesn't fade in. Fading on its own doesn't reinforce points of origin or destinations of items in the same way as motion does (#33132 is a great example of how replacing a fade with motion helps indicate what's about to happen), so I tend to be a little more sparing with the usage.

Really fantastic work, thank you!

@gwwar gwwar force-pushed the try/framer-motion branch from 9a47c2c to b20bceb Compare August 3, 2021 18:45
@gwwar
Copy link
Contributor Author

gwwar commented Aug 3, 2021

Is that something we can turn off somewhat easily, though?

Yes, we can turn it off. It's defined here:

https://github.com/WordPress/gutenberg/pull/33765/files#diff-87d2159ad7cb10761b54a0975e21535c674d6a18b1f4c445182d4a6e09fa8fe8R11-R21

🤔 Normally I'd simply animate height from '0' to 'auto'. One thing I'm running into is that table rows treat the CSS height property as a min-height, which makes animating this a little interesting. I'll play around with this a bit more.

@jasmussen
Copy link
Contributor

🤔 Normally I'd simply animate height from '0' to 'auto'. One thing I'm running into is that table rows treat the CSS height property as a min-height, which makes animating this a little interesting. I'll play around with this a bit more.

This rings a bell for me for basic CSS animation also, animating from nothing to the intrinsic height. From what I recall the trick I've used in the past was to animate the max-height instead of the height (keep that at auto), and then animate to a max-height that's going to be larger than the item will ever get.

@gwwar
Copy link
Contributor Author

gwwar commented Aug 4, 2021

Tables are built to take into account it's cell dimensions. Some options that could work:

  1. Animate height on the individual cells (not my first choice since it adds complexity)
  2. Temporarily z-index on a layer lower than the parent branch and translate in the row(s)
  3. Animate scaleY, (though we'd need to fudge the content say opacity fade in or a placeholder).

I'll circle back to this, after I try and sort out #33717

@gwwar gwwar force-pushed the try/framer-motion branch from f510e1f to 9bb06cd Compare August 4, 2021 16:35
Base automatically changed from try/framer-motion to trunk August 5, 2021 16:25
@gwwar gwwar force-pushed the update/tree-grid-animation branch from 6bdf425 to 09bd076 Compare August 5, 2021 16:40
@gwwar
Copy link
Contributor Author

gwwar commented Aug 5, 2021

Okay in b5c7b46 I went ahead and did a few things.

  • Removed the animation exit prop since it wasn't firing and didn't look necessary for this interaction.
  • Updated ListView so that the mount animation only fires when we toggle the expand. (This removes the fade in on sidebar open + animations when new blocks are inserted when typing). Making sure this happens is a little more complex, since when we toggle close a branch I do want hidden branches to not be rendered in DOM. (If branches are otherwise hidden but present in DOM, avoiding an animation on mount would simply be initial = { false }.

Since this component is built with tables, animating height is going to be annoying (since we end up needing to either scale the row or modify height on child cells). This is why I keep the opacity fade in effect for expand. This helps soften things as elements render in, and other existing branches move down.

@gwwar
Copy link
Contributor Author

gwwar commented Aug 11, 2021

Drag explorations are getting pretty long here so I'll continue with that in #34022, and drop the experimental changes on this branch.

@gwwar gwwar force-pushed the update/tree-grid-animation branch from 715a6c0 to 3187402 Compare August 11, 2021 18:37
@gwwar
Copy link
Contributor Author

gwwar commented Aug 11, 2021

🤔 I played around a bit with disabling animations while dragging to avoid the slowdown, it doesn't feel quite right / is a bit tricky to get state right.

@jasmussen
Copy link
Contributor

Even if it's still a work in progress, the work you're doing here is amazing. This is what I see:

this

It feels like the current behavior very loyally mimics the in-canvas behavior:

  • Collapse into a chip
  • Get "pulled out" of the flow

As is also implied in #33950, this is a bit of a legacy behavior that, longer term, isn't necessarily what we want. That is, collapsing to a chip could still be necessary in the canvas itself when dragging very big items — but especially here in the list view, the value of collapsing to a chip is reduced. Which suggests that the dragging could be more instant/live.

That might also be a mammoth task so I'm not necessarily suggesting that's what it has to be — even what's in this branch now is a vast improvement. Only clarifying so as to not limit your explorations here ✨

@gwwar
Copy link
Contributor Author

gwwar commented Aug 27, 2021

closing in favor of #34022

@gwwar gwwar closed this Aug 27, 2021
@gwwar gwwar deleted the update/tree-grid-animation branch September 20, 2021 16:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Package] Block editor /packages/block-editor [Package] Components /packages/components [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants