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

Editor: Animate opening and closing editor right sidebar #60561

Merged
merged 10 commits into from
Apr 11, 2024

Conversation

youknowriad
Copy link
Contributor

Related to #60423

What?

This PR animates the right sidebar of the post and site editors (opening and closing the sidebar). It takes a different approach than #60423 (animates the width of the complementary area which automatically pushes the content so we don't need to animate the content).

Notes

  • I'm not entirely sure about the performance impact of this PR. Something to be checked.
  • I wanted to avoid animating the sidebar if we're replacing the sidebar with another one (like when switching between global styles and post sidebar) but failed to do so, so far.

Testing Instructions

  • Try the post and site editors.
  • Try opening and closing sidebars there.

@youknowriad youknowriad added [Type] Enhancement A suggestion for improvement. General Interface Parts of the UI which don't fall neatly under other labels. labels Apr 8, 2024
@youknowriad youknowriad self-assigned this Apr 8, 2024
@@ -313,25 +307,8 @@ function Layout( { initialPost } ) {
editorNotices={ <EditorNotices /> }
secondarySidebar={ secondarySidebar() }
sidebar={
( ( isMobileViewport && sidebarIsOpened ) ||
( ! isMobileViewport && ! isDistractionFree ) ) && (
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Sidebar animations can't work if the sidebar is conditionally rendered, it means that we have to "always" render the sidebar and let the "complementary areas" handle the showing/hiding of the panels.

This means that I removed the "toggle sidebar" button that is present in the post editor (this also aligns behavior with the site editor).

Copy link

github-actions bot commented Apr 8, 2024

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

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

Co-authored-by: youknowriad <[email protected]>
Co-authored-by: jameskoster <[email protected]>
Co-authored-by: jasmussen <[email protected]>
Co-authored-by: ellatrix <[email protected]>

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

@@ -204,59 +249,56 @@ function ComplementaryArea( {
{ title }
</ComplementaryAreaMoreMenuItem>
) }
{ isActive && (
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 condition moved within the "fill" to ensure the AnimatePresence animation work. This is probably the most impactful change here that we need to assess in terms of performance...

Copy link

github-actions bot commented Apr 8, 2024

Size Change: +735 B (0%)

Total Size: 1.75 MB

Filename Size Change
build/block-editor/index.min.js 255 kB +70 B (0%)
build/block-library/blocks/pullquote/style.css 353 B -1 B (0%)
build/block-library/style-rtl.css 14.8 kB -1 B (0%)
build/block-library/style.css 14.8 kB -1 B (0%)
build/components/index.min.js 222 kB +21 B (0%)
build/edit-post/index.min.js 23.5 kB +159 B (+1%)
build/edit-post/style-rtl.css 5.5 kB -13 B (0%)
build/edit-post/style.css 5.5 kB -10 B (0%)
build/edit-site/index.min.js 232 kB +262 B (0%)
build/edit-site/style-rtl.css 15 kB +24 B (0%)
build/edit-site/style.css 15.1 kB +18 B (0%)
build/edit-widgets/index.min.js 17.6 kB +249 B (+1%)
build/edit-widgets/style-rtl.css 4.16 kB +3 B (0%)
build/edit-widgets/style.css 4.16 kB +6 B (0%)
build/format-library/index.min.js 8.07 kB -44 B (-1%)
build/interactivity/debug.min.js 16.2 kB -3 B (0%)
build/interactivity/index.min.js 13 kB -4 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 955 B
build/annotations/index.min.js 2.27 kB
build/api-fetch/index.min.js 2.32 kB
build/autop/index.min.js 2.1 kB
build/blob/index.min.js 578 B
build/block-directory/index.min.js 7.26 kB
build/block-directory/style-rtl.css 1.03 kB
build/block-directory/style.css 1.03 kB
build/block-editor/content-rtl.css 4.46 kB
build/block-editor/content.css 4.46 kB
build/block-editor/default-editor-styles-rtl.css 394 B
build/block-editor/default-editor-styles.css 394 B
build/block-editor/style-rtl.css 15.6 kB
build/block-editor/style.css 15.6 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 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 133 B
build/block-library/blocks/audio/theme.css 133 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 104 B
build/block-library/blocks/avatar/style.css 104 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 415 B
build/block-library/blocks/button/editor.css 414 B
build/block-library/blocks/button/style-rtl.css 627 B
build/block-library/blocks/button/style.css 626 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 421 B
build/block-library/blocks/columns/style.css 421 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 647 B
build/block-library/blocks/cover/editor.css 650 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 322 B
build/block-library/blocks/embed/editor.css 322 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 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 327 B
build/block-library/blocks/file/style-rtl.css 280 B
build/block-library/blocks/file/style.css 281 B
build/block-library/blocks/file/view.min.js 324 B
build/block-library/blocks/footnotes/style-rtl.css 201 B
build/block-library/blocks/footnotes/style.css 199 B
build/block-library/blocks/form-input/editor-rtl.css 227 B
build/block-library/blocks/form-input/editor.css 227 B
build/block-library/blocks/form-input/style-rtl.css 343 B
build/block-library/blocks/form-input/style.css 343 B
build/block-library/blocks/form-submission-notification/editor-rtl.css 340 B
build/block-library/blocks/form-submission-notification/editor.css 340 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 471 B
build/block-library/blocks/freeform/editor-rtl.css 2.61 kB
build/block-library/blocks/freeform/editor.css 2.61 kB
build/block-library/blocks/gallery/editor-rtl.css 947 B
build/block-library/blocks/gallery/editor.css 952 B
build/block-library/blocks/gallery/style-rtl.css 1.72 kB
build/block-library/blocks/gallery/style.css 1.72 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 647 B
build/block-library/blocks/group/editor.css 647 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 189 B
build/block-library/blocks/heading/style.css 189 B
build/block-library/blocks/html/editor-rtl.css 336 B
build/block-library/blocks/html/editor.css 337 B
build/block-library/blocks/image/editor-rtl.css 878 B
build/block-library/blocks/image/editor.css 878 B
build/block-library/blocks/image/style-rtl.css 1.6 kB
build/block-library/blocks/image/style.css 1.59 kB
build/block-library/blocks/image/theme-rtl.css 133 B
build/block-library/blocks/image/theme.css 133 B
build/block-library/blocks/image/view.min.js 1.54 kB
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 306 B
build/block-library/blocks/media-text/editor.css 305 B
build/block-library/blocks/media-text/style-rtl.css 505 B
build/block-library/blocks/media-text/style.css 503 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 668 B
build/block-library/blocks/navigation-link/editor.css 669 B
build/block-library/blocks/navigation-link/style-rtl.css 259 B
build/block-library/blocks/navigation-link/style.css 257 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 296 B
build/block-library/blocks/navigation-submenu/editor.css 295 B
build/block-library/blocks/navigation/editor-rtl.css 2.26 kB
build/block-library/blocks/navigation/editor.css 2.26 kB
build/block-library/blocks/navigation/style-rtl.css 2.26 kB
build/block-library/blocks/navigation/style.css 2.25 kB
build/block-library/blocks/navigation/view.min.js 1.03 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 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 235 B
build/block-library/blocks/paragraph/editor.css 235 B
build/block-library/blocks/paragraph/style-rtl.css 335 B
build/block-library/blocks/paragraph/style.css 335 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 508 B
build/block-library/blocks/post-comments-form/style.css 508 B
build/block-library/blocks/post-content/editor-rtl.css 74 B
build/block-library/blocks/post-content/editor.css 74 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 666 B
build/block-library/blocks/post-featured-image/editor.css 662 B
build/block-library/blocks/post-featured-image/style-rtl.css 342 B
build/block-library/blocks/post-featured-image/style.css 342 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 409 B
build/block-library/blocks/post-template/style.css 408 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 125 B
build/block-library/blocks/preformatted/style.css 125 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 354 B
build/block-library/blocks/pullquote/theme-rtl.css 174 B
build/block-library/blocks/pullquote/theme.css 174 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 486 B
build/block-library/blocks/query/editor.css 486 B
build/block-library/blocks/query/view.min.js 958 B
build/block-library/blocks/quote/style-rtl.css 237 B
build/block-library/blocks/quote/style.css 237 B
build/block-library/blocks/quote/theme-rtl.css 233 B
build/block-library/blocks/quote/theme.css 235 B
build/block-library/blocks/read-more/style-rtl.css 140 B
build/block-library/blocks/read-more/style.css 140 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 184 B
build/block-library/blocks/search/editor.css 184 B
build/block-library/blocks/search/style-rtl.css 690 B
build/block-library/blocks/search/style.css 689 B
build/block-library/blocks/search/theme-rtl.css 114 B
build/block-library/blocks/search/theme.css 114 B
build/block-library/blocks/search/view.min.js 478 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 229 B
build/block-library/blocks/separator/style.css 229 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 323 B
build/block-library/blocks/shortcode/editor.css 323 B
build/block-library/blocks/site-logo/editor-rtl.css 754 B
build/block-library/blocks/site-logo/editor.css 754 B
build/block-library/blocks/site-logo/style-rtl.css 204 B
build/block-library/blocks/site-logo/style.css 204 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 676 B
build/block-library/blocks/social-links/editor.css 675 B
build/block-library/blocks/social-links/style-rtl.css 1.48 kB
build/block-library/blocks/social-links/style.css 1.48 kB
build/block-library/blocks/spacer/editor-rtl.css 350 B
build/block-library/blocks/spacer/editor.css 350 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 395 B
build/block-library/blocks/table/editor.css 395 B
build/block-library/blocks/table/style-rtl.css 639 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/style-rtl.css 251 B
build/block-library/blocks/tag-cloud/style.css 253 B
build/block-library/blocks/template-part/editor-rtl.css 431 B
build/block-library/blocks/template-part/editor.css 431 B
build/block-library/blocks/template-part/theme-rtl.css 107 B
build/block-library/blocks/template-part/theme.css 107 B
build/block-library/blocks/term-description/style-rtl.css 111 B
build/block-library/blocks/term-description/style.css 111 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 185 B
build/block-library/blocks/video/style.css 185 B
build/block-library/blocks/video/theme-rtl.css 133 B
build/block-library/blocks/video/theme.css 133 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.11 kB
build/block-library/common.css 1.11 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/editor-rtl.css 12.4 kB
build/block-library/editor.css 12.4 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/index.min.js 218 kB
build/block-library/reset-rtl.css 472 B
build/block-library/reset.css 472 B
build/block-library/theme-rtl.css 707 B
build/block-library/theme.css 713 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 51.5 kB
build/commands/index.min.js 15.2 kB
build/commands/style-rtl.css 956 B
build/commands/style.css 953 B
build/components/style-rtl.css 11.9 kB
build/components/style.css 11.9 kB
build/compose/index.min.js 12.6 kB
build/core-commands/index.min.js 2.77 kB
build/core-data/index.min.js 72.5 kB
build/customize-widgets/index.min.js 11.2 kB
build/customize-widgets/style-rtl.css 1.36 kB
build/customize-widgets/style.css 1.36 kB
build/data-controls/index.min.js 640 B
build/data/index.min.js 9 kB
build/date/index.min.js 17.9 kB
build/deprecated/index.min.js 451 B
build/dom-ready/index.min.js 324 B
build/dom/index.min.js 4.65 kB
build/edit-post/classic-rtl.css 578 B
build/edit-post/classic.css 579 B
build/editor/index.min.js 68.1 kB
build/editor/style-rtl.css 5.47 kB
build/editor/style.css 5.47 kB
build/element/index.min.js 4.83 kB
build/escape-html/index.min.js 537 B
build/format-library/style-rtl.css 492 B
build/format-library/style.css 490 B
build/hooks/index.min.js 1.55 kB
build/html-entities/index.min.js 448 B
build/i18n/index.min.js 3.58 kB
build/interactivity/file.min.js 447 B
build/interactivity/image.min.js 1.67 kB
build/interactivity/navigation.min.js 1.17 kB
build/interactivity/query.min.js 740 B
build/interactivity/router.min.js 1.36 kB
build/interactivity/search.min.js 618 B
build/is-shallow-equal/index.min.js 527 B
build/keyboard-shortcuts/index.min.js 1.3 kB
build/keycodes/index.min.js 1.46 kB
build/list-reusable-blocks/index.min.js 2.11 kB
build/list-reusable-blocks/style-rtl.css 851 B
build/list-reusable-blocks/style.css 849 B
build/media-utils/index.min.js 2.92 kB
build/modules/importmap-polyfill.min.js 12.2 kB
build/notices/index.min.js 948 B
build/nux/index.min.js 1.57 kB
build/nux/style-rtl.css 747 B
build/nux/style.css 742 B
build/patterns/index.min.js 5.91 kB
build/patterns/style-rtl.css 553 B
build/patterns/style.css 552 B
build/plugins/index.min.js 1.8 kB
build/preferences-persistence/index.min.js 2.06 kB
build/preferences/index.min.js 2.83 kB
build/preferences/style-rtl.css 710 B
build/preferences/style.css 712 B
build/primitives/index.min.js 975 B
build/priority-queue/index.min.js 1.52 kB
build/private-apis/index.min.js 1 kB
build/react-i18n/index.min.js 623 B
build/react-refresh-entry/index.min.js 9.47 kB
build/react-refresh-runtime/index.min.js 6.78 kB
build/redux-routine/index.min.js 2.7 kB
build/reusable-blocks/index.min.js 2.73 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 10 kB
build/router/index.min.js 1.88 kB
build/server-side-render/index.min.js 1.96 kB
build/shortcode/index.min.js 1.39 kB
build/style-engine/index.min.js 2.03 kB
build/token-list/index.min.js 582 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.7 kB
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 957 B
build/warning/index.min.js 249 B
build/widgets/index.min.js 7.23 kB
build/widgets/style-rtl.css 1.17 kB
build/widgets/style.css 1.17 kB
build/wordcount/index.min.js 1.02 kB

compressed-size-action

@jasmussen
Copy link
Contributor

This is quite nice:

state

There's still a jump if you go from site view to edit view with the inspector appearing. I suppose that's mostly separate since that's already an issue in trunk.

One thing to consider is the potential performance problem of reflowing the content dynamically, which is likely to be especially a problem on pages that are very very long. I've seen a few apps, I don't recall the name, that have similar animations for the sidebars appearing, and the way they performantly handle content reflowing is to immediately jump the container width to its final width, but while keeping the background color you really don't notice this jump at all. That might be something to consider here.

@youknowriad
Copy link
Contributor Author

One thing to consider is the potential performance problem of reflowing the content dynamically, which is likely to be especially a problem on pages that are very very long. I've seen a few apps, I don't recall the name, that have similar animations for the sidebars appearing, and the way they performantly handle content reflowing is to immediately jump the container width to its final width, but while keeping the background color you really don't notice this jump at all. That might be something to consider here.

Indeed, I think it's something we need to consider. One level of added complexity for us is that the background is applied within the iframe (and mostly provided by themes) while the divs animating are editor UI (in a very different place). It makes this very challenging to achieve.

@jasmussen
Copy link
Contributor

I feel like I'm probably retreading a past conversation about frame background colors, but I'll ask regardless; if we can know the background color, can we apply it to a div wrapping the iframe, animate that, but shift the iframe to its final width immediately?

@youknowriad
Copy link
Contributor Author

I feel like I'm probably retreading a past conversation about frame background colors, but I'll ask regardless; if we can know the background color, can we apply it to a div wrapping the iframe, animate that, but shift the iframe to its final width immediately?

We can try at least :)

@jameskoster
Copy link
Contributor

jameskoster commented Apr 8, 2024

Pushed a small tweak to update the animation profile so that it matches the figma prototype. That's not set in stone, but I figured it was worth trying out here.

One observation; when you close the inspector, the active tab is instantly deslected resulting in a flash where the majority of the panel contents vanishes before the panel itself has slid out of view. Easily observed when the animation is slowed down:

flash.mp4

Is there any way to delay/avoid that?

I wanted to avoid animating the sidebar if we're replacing the sidebar with another one

Agree it would be good to avoid this. Not just because the animation is jarring, but also because there's some visual glitches that appear during the switch.

@youknowriad
Copy link
Contributor Author

One observation; when you close the inspector, the active tab is instantly deslected resulting in a flash where the majority of the panel contents vanishes before the panel itself has slid out of view.

Yes I know, unfortunately, there's no way to avoid that, it's because of how the block controls API (fills) work.

@youknowriad
Copy link
Contributor Author

Actually there might be a solution for the empty tabs, let me check.

@youknowriad
Copy link
Contributor Author

@jameskoster I managed to solve it for 90% of the cases. There are some cases where the sidebar content switches from "document" to "block" or vice versa on close but I think it's fine.

  • When you have a block selected and you manually switch to document sidebar, closing the sidebar auto-switches to block during the animation.
  • When you have no block selected and you manually switch to block sidebar, closing the sidebar auto-switches to document during the animation.

I think both of these are fine because they're actually the state of the sidebar if you open it again.

@jameskoster
Copy link
Contributor

When you have a block selected and you manually switch to document sidebar, closing the sidebar auto-switches to block during the animation.

This one's a bit of a shame, but otherwise it's much better now 👍

@ellatrix
Copy link
Member

ellatrix commented Apr 8, 2024

I feel like I'm probably retreading a past conversation about frame background colors, but I'll ask regardless; if we can know the background color, can we apply it to a div wrapping the iframe, animate that, but shift the iframe to its final width immediately?

What do you mean with immediately? Does that mean change the width before or after the animation? Based on the previous sentence, I assume you mean after the animation, right? What if we change the with before the animation? It sounds horrendous, but in my head it might actually be nice, and it's technically way less complex.

@jasmussen
Copy link
Contributor

What do you mean with immediately? Does that mean change the width before or after the animation? Based on the previous sentence, I assume you mean after the animation, right? What if we change the with before the animation? It sounds horrendous, but in my head it might actually be nice, and it's technically way less complex.

I mean with. In this branch when you toggle the sidebar, the viewport and the sidebar both animate at the same time.

What I'm suggesting is that as soon as you click to toggle the sidebar, the content snaps to the final width, and the sidebar animates in. Combined with the background color of the canvas remaining in place, I don't think you'd notice that the content didn't also animate, and it would avoid the constant reflowing.

I was testing this exact thing in a writing app recently, that did the same thing to avoid reflowing, and it felt entirely non-disruptive.

@ellatrix
Copy link
Member

ellatrix commented Apr 8, 2024

Yeah it will depend on whether the sidebar hides or shows:

  • When sliding in, the content width will need to adjust first, then animate in.
  • When sliding out, the content width will need to adjust after you slide the sidebar out.

That'd be to prevent content and sidebar overlapping

@jasmussen
Copy link
Contributor

Sounds good to me. If the background color stays part of the designated editor area, then I don't think anyone would notice.

@ellatrix
Copy link
Member

ellatrix commented Apr 8, 2024

So what we need is some kind of background detection like they do for iOS web pages to fill in the notch area :)

@youknowriad youknowriad force-pushed the add/animate-complementary-area branch from 93c569b to 93f8085 Compare April 9, 2024 09:12
@youknowriad
Copy link
Contributor Author

youknowriad commented Apr 9, 2024

I've been thinking about the background thing (avoid text reflow). It's not that simple. Copying the background from the iframe and applying it outside won't work. It breaks when backgrounds are not simple colors. Because you'll have two backgrounds applied one on the upper div and one the inner one, creating weird things (for gradients...)

So the right solution would be to animate the "body" of the iframe (where the background is applied) but the inner div within the body shouldn't animate. But this is very hard to do because within the "Iframe" component we have no awareness of sidebars/animations... I'm out of ideas here for now.

@youknowriad youknowriad force-pushed the add/animate-complementary-area branch from 97509d0 to 73fd919 Compare April 10, 2024 09:46
@jasmussen
Copy link
Contributor

If you're ok with these tradeoffs, than I think it's a solution that we can explore. It doesn't seem that complex. I'm going to leave it to a separate PR though because I feel like the current PR is good enough. WDYT?

Sounds good to me, happy to try it.

@jasmussen
Copy link
Contributor

Oh, one thing that's actually a little jarring, if you go directly to the post editor, it also animates in there. Or even if you just open a post or page or site editor in the edit view, then reload the page, it animates in.

The animation really makes the most sense when going from Site View to Edit View, and not always. Can we limit it to that?

@youknowriad
Copy link
Contributor Author

The animation really makes the most sense when going from Site View to Edit View, and not always. Can we limit it to that?

Fixed the initial animation but the edit mode thing requires more changes that I prefer to do separately.

@@ -372,7 +372,7 @@ test.describe( 'Multi-block selection (@firefox, @webkit)', () => {
const { height } = await paragraphBlock.boundingBox();
await paragraphBlock.click( { position: { x: 0, y: height / 2 } } );
await paragraphBlock.click( {
position: { x: 20, y: height / 2 },
position: { x: 25, y: height / 2 },
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Changing this solved the e2e test failure. I'm not exactly sure why the mouse need to move a little further to select the right characters (only in webkit) in this PR. but this unblocks this PR.

@youknowriad youknowriad merged commit b92efc1 into trunk Apr 11, 2024
67 checks passed
@youknowriad youknowriad deleted the add/animate-complementary-area branch April 11, 2024 10:51
@github-actions github-actions bot added this to the Gutenberg 18.2 milestone Apr 11, 2024
@stokesman
Copy link
Contributor

There’s wrinkle here when scrollbars aren’t overlaid. The horizontal scrollbar shows up during animation.

editor-right-sidebar-horizontal-scrollbar.mp4

That’s macOS 13.6.6 with scrollbars set to show.

@youknowriad
Copy link
Contributor Author

Good catch @stokesman fix here #60889

@afercia
Copy link
Contributor

afercia commented May 9, 2024

This means that I removed the "toggle sidebar" button that is present in the post editor (this also aligns behavior with the site editor).

This breaks the ARIA landmarks principle, as there is now an empty ARIA landmark.
Also, navigating regions with the Cmd + backtick keyboard shortcut now brings to a landmark region that is completely empty, when the panel is closed.

@youknowriad there is a reason why we put a button there. When the panel is closed it needs to have some content anyways as ARIA landmarks can't be empty. Also, they can't be dynamic. An ARIA landmark must always be rendered and it must contains something, otherwise it is pointless to use ARIA landmarks in the first place.

I think we discussed this point a few times previously and I'm a little surprised this button has been removed so lightly, touching an important accessibility feature in a PR that doesn't have the accessibility label.

Noting there are other parts in the editor where the ARIA landmarks principle is broken, as there are some landmarks that are rendered conditionally or do not contain any content, depending on some conditions.

It seems to me best practices on how to use ARIA landmarks are a little obscure and often missed, I will try to document it better in a dedicated issue and in the documentation first. Then I will creeate specific issues for each case that needs to be addressed.

For the future, I'd appreciate changes like this to be discussed more broadly to prevent introducing regressions in the accessibility level of the editor. Thanks.

Cc @alexstine @joedolson @andrewhayward

@youknowriad
Copy link
Contributor Author

@afercia The button was not present in the site editor, and the implementation was not correct in many ways. We can bring it back in both editor though. I can take a look.

@afercia
Copy link
Contributor

afercia commented May 23, 2024

Yes I know the button was only in the Post Editor.
Looking at the ARIA landmarks implementation in the editor, I'd think it would need a broader discussion and hopefully be implemented in a more solid way, also documented in the design guidelines.
I'm thinking next WordCamp Europe contributor day would be a good opportunity to discuss this with the accessibility team first to establish some new foudnation for these feature.

@sergiu-radu
Copy link

Hello @youknowriad,

In past we where changing it from CSS to 320px so our UI elements could have more space and look better but now it's impossible to do this from CSS and keep also the animation.

Do you think you can introduce a filter for changing the sidebar width?

This will help us a lot.

@youknowriad
Copy link
Contributor Author

Do you think you can introduce a filter for changing the sidebar width?

I think we can consider a filter or a preference. Would you mind creating an issue for it (if non existent)?

@sergiu-radu
Copy link

Hey @youknowriad, sure, we can even create a PR in case you are able to include this filter in 6.6 release.

@stokesman
Copy link
Contributor

stokesman commented Jul 15, 2024

Customizing the sidebar width was brought up in #62599. I think it may have been fine to reopen that one with edits (leave out the bit about the class name).

in case you are able to include this filter in 6.6 release.

It’s too late in the release cycle for such additions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
General Interface Parts of the UI which don't fall neatly under other labels. [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants