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

Add back button for isolated template part editor #34732

Merged
merged 8 commits into from
Sep 28, 2021

Conversation

kevin940726
Copy link
Member

@kevin940726 kevin940726 commented Sep 10, 2021

Description

Related to #33926. Addresses the following:

  • The editor canvas should isolate the Template Part (visually inset on the canvas to illustrate its boundaries).
  • Have a clear way to go back / out of the focused view.

Added a "edit-post"-style back button for isolated template part editor based on the design in #29148 (comment), modified to include a dark background as seen in "edit-post" template editor. See the attached screencast below.

The back button is only visible when navigating to an "isolated template part editor" from another editor. It's not there in template editor, nor when landing directly in the isolated template part editor (as there isn't anywhere to go back to).

I noticed that we're not using browser's history to navigating between editors, I'm not sure if it's an oversight or an intentional behavior. Hence, we can't just use the native history.back() for this feature.

How has this been tested?

  1. Activate "tt1-block" theme.
  2. Go to Site Editor.
  3. Enable template part "focus mode" by selecting a template part and click "Edit %s" in the block toolbar.
  4. Notice that there's dimmed background and a back button along with the previous template page name.
  5. Click the back button to go back to the previous template.
  6. Navigate to the template part editor via sidebar, notice the back button and the background are not there anymore.

Screenshots

Kapture.2021-09-24.at.10.39.34.mp4

Types of changes

New feature

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • I've tested my changes with keyboard and screen readers.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR (please manually search all *.native.js files for terms that need renaming or removal).

@kevin940726 kevin940726 added the [Feature] Template Editing Mode Related to the template editor available in the Block Editor label Sep 10, 2021
@github-actions
Copy link

github-actions bot commented Sep 10, 2021

Size Change: +5.17 kB (0%)

Total Size: 1.07 MB

Filename Size Change
build/block-editor/index.min.js 138 kB +4.26 kB (+3%)
build/block-editor/style-rtl.css 13.9 kB +20 B (0%)
build/block-editor/style.css 13.9 kB +20 B (0%)
build/block-library/index.min.js 148 kB +43 B (0%)
build/components/index.min.js 210 kB +60 B (0%)
build/components/style-rtl.css 16 kB +112 B (+1%)
build/components/style.css 16 kB +112 B (+1%)
build/edit-site/index.min.js 28 kB +313 B (+1%)
build/edit-site/style-rtl.css 5.31 kB +91 B (+2%)
build/edit-site/style.css 5.3 kB +93 B (+2%)
build/media-utils/index.min.js 2.92 kB +40 B (+1%)
ℹ️ 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.19 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-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 600 B
build/block-library/blocks/button/style.css 600 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 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 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 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 983 B
build/block-library/blocks/gallery/editor.css 988 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 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 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 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 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.72 kB
build/block-library/blocks/navigation/editor.css 1.72 kB
build/block-library/blocks/navigation/style-rtl.css 1.48 kB
build/block-library/blocks/navigation/style.css 1.47 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/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 398 B
build/block-library/blocks/post-featured-image/editor.css 398 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 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-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 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 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.3 kB
build/block-library/blocks/social-links/style.css 1.3 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 853 B
build/block-library/common.css 849 B
build/block-library/editor-rtl.css 9.76 kB
build/block-library/editor.css 9.75 kB
build/block-library/reset-rtl.css 527 B
build/block-library/reset.css 527 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 47 kB
build/compose/index.min.js 10.3 kB
build/core-data/index.min.js 12.3 kB
build/customize-widgets/index.min.js 11.1 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.45 kB
build/edit-navigation/index.min.js 15.5 kB
build/edit-navigation/style-rtl.css 3.69 kB
build/edit-navigation/style.css 3.69 kB
build/edit-post/classic-rtl.css 492 B
build/edit-post/classic.css 494 B
build/edit-post/index.min.js 29 kB
build/edit-post/style-rtl.css 7.18 kB
build/edit-post/style.css 7.17 kB
build/edit-widgets/index.min.js 16.1 kB
build/edit-widgets/style-rtl.css 4.09 kB
build/edit-widgets/style.css 4.09 kB
build/editor/index.min.js 37.4 kB
build/editor/style-rtl.css 3.76 kB
build/editor/style.css 3.75 kB
build/element/index.min.js 3.17 kB
build/escape-html/index.min.js 517 B
build/format-library/index.min.js 5.34 kB
build/format-library/style-rtl.css 668 B
build/format-library/style.css 670 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/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.6 kB
build/server-side-render/index.min.js 1.5 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

}

return (
<Button
Copy link
Member Author

Choose a reason for hiding this comment

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

We probably should auto focus on this element when navigating to the isolated editor?

Copy link
Member

Choose a reason for hiding this comment

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

Hm. Could we focus .edit-site-visual-editor? That way pressing Tab once focuses the close button. This matches how other modal interfaces work in the block editor e.g. opening Preferences.

cc. @tellthemachines who is smarter than I am at this kind of stuff.

Copy link
Contributor

Choose a reason for hiding this comment

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

I'm not 100% sure what's going on here, but this is what I'm seeing:

When tabbing through the page, starting from the header, the back button is focusable in the normal tab order as long as nothing inside the editor is selected. This means that if I tab to the button, and tab once more, landing on the first block in the editor area, I'm unable to Shift+Tab back to the button. In addition, the shortcut to navigate between landmark areas (Ctrl+`) doesn't seem to work in the site editor, so there's no way to get back to that button.

I'd expect to be able to Shift+Tab back to the button from the editor.

Copy link
Member Author

Choose a reason for hiding this comment

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

Hmm, I couldn't figure it out either. It seems like pressing Shift + Tab goes back to the editor header in site editor. No idea if it's a browser thing or it's handled somewhere else 🤔. It's not that normal since the editor is in an iframe. Anyone has any idea how to fix this?

Comment on lines 62 to 55
{ sprintf(
/* translators: 1: Template name. 2: Template type name ("template" or "template part"). */
__( 'Back to "%1$s" %2$s' ),
previousTemplateTitle,
getTemplateTypeName( previousTemplateType )
) }
Copy link
Member Author

Choose a reason for hiding this comment

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

We probably don't want "template part" since it's a technical term? Should we just remove this entirely and just say Back to "index" or Back to "header"?

Copy link
Member Author

Choose a reason for hiding this comment

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

c.c. @jameskoster because you mentioned it in #34679 (review) 🙂

Copy link
Contributor

Choose a reason for hiding this comment

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

I'm not sure that we need to display the name here. Just a "<- Back" label (like in the post editor) is probably adequate?

Copy link
Member Author

Choose a reason for hiding this comment

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

It was in the design mockup though, but also works for me if we decide to remove it.

I guess it would have some benefits when we have nested template parts (if ever).

@kevin940726 kevin940726 marked this pull request as ready for review September 10, 2021 09:38
Copy link
Contributor

@jameskoster jameskoster left a comment

Choose a reason for hiding this comment

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

To me it feels a little peculiar to see the back button when opening a template part via the navigation sidebar. That particular action seems more like the commencement of a new flow, and so the back buttons feels contextually misplaced.

I would however expect to see the back button when accessing the isolated template part view from the "Edit template part" menu item we're working on in #34679.

Related to this, we should probably consider utilising the other "go back" design pattern from the post editor:

back.mp4

Although I acknowledge that we may prefer to do that separately :)

@jameskoster jameskoster mentioned this pull request Sep 10, 2021
13 tasks
Copy link
Member

@noisysocks noisysocks left a comment

Choose a reason for hiding this comment

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

Code looks really good, nice work. A lot of it will change after you address @jameskoster's feedback so not sure my review is very helpful 😀

}

return (
<Button
Copy link
Member

Choose a reason for hiding this comment

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

Hm. Could we focus .edit-site-visual-editor? That way pressing Tab once focuses the close button. This matches how other modal interfaces work in the block editor e.g. opening Preferences.

cc. @tellthemachines who is smarter than I am at this kind of stuff.

@@ -87,15 +96,19 @@ export default function BlockEditor( { setIsInserterOpen } ) {
<BlockInspector />
</SidebarInspectorFill>
<BlockTools
className="edit-site-visual-editor"
className={ classnames( 'edit-site-visual-editor', {
'is-template-part': isTemplatePart,
Copy link
Member

Choose a reason for hiding this comment

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

Right, so per @jameskoster's feedback (I was confused about this too) we probably should show the black border when there is a is-isolated class instead of just whenever a template part is being edited.

packages/edit-site/src/store/reducer.js Show resolved Hide resolved
@kevin940726
Copy link
Member Author

To me it feels a little peculiar to see the back button when opening a template part via the navigation sidebar. That particular action seems more like the commencement of a new flow, and so the back buttons feels contextually misplaced.

Yeah, that makes a lot of sense!

Quoting this from the PR body to bring this up again since I feel like it's important (and I'm curious):

I noticed that we're not using browser's history to navigating between editors, I'm not sure if it's an oversight or an intentional behavior. Hence, we can't just use the native history.back() for this feature.

Anyone knows why we aren't making the isolated (zoom) mode a native navigation on window.history?

@jameskoster
Copy link
Contributor

Anyone knows why we aren't making the isolated (zoom) mode a native navigation on window.history?

I can't comment on the technical side. I'm also not sure if this has ever been discussed from the design side either. Perhaps Joen knows? @jasmussen when a user moves from editing something like a post, to a template or template part, should the browser back button take them back to the original post?

@noisysocks
Copy link
Member

Personally if I saw a button labelled ← Back then I'd expect the browser back button to also work. If it were Ⅹ Close then I would not.

@jasmussen
Copy link
Contributor

when a user moves from editing something like a post, to a template or template part, should the browser back button take them back to the original post?

For any navigation you make to what feels like a different interface or document, I'd expect the browser back button to go back to where you were, ideally.

However I want to pose the question: that in-canvas back button, do we want it at all? It's never quite clear what it goes back to, and the button has become synonymous with "go left", even to the point of the icon pointing there, which is rarely accurate. Why should editing a template part be different from editing a template in that vein?

@jasmussen
Copy link
Contributor

Re-introducing myself with #33926, I think there's an aspect to isolated template part editing which is important, namely the UX for flowing in and out of it. In a sense you can already do that today with the W menu, by choosing a template part and editing it then and there. But from what I read, template part isolation mode needs more context to the parent template than W navigation provides. If you are meant to go back to editing the Index template, that has to be where you came from — which is only technically and in a browser history sense the case with this PR.

Here's an older and very obsolete mockup showing how flowing in and out of template mode could be a much more literal thing, featuring animation and scaling:

Group 325

In the above context, I'd expect to be able to click outside the template part, on the scrimmed area, to exit that isolation mode.

A more likely flow would be between these two:

Group 327

How you get from left to right and back again is suggested here:

  • List view as an icon button.
  • The Ellipsis in the Template Part toolbar.

Notably, the context between template and isolated template part is kept, since you enter the mode from either of the above mechanisms, making it more obvious where you go when you go "back". In this vein, perhaps a close button actually would make sense?

@jameskoster
Copy link
Contributor

Thanks for your input @jasmussen, and for digging up the old mockups.

I agree that the back button feels part of a larger discussion. From a more holistic viewpoint I too have reservations.

I believe the zooming design can work very well for moving in and out of document / file management, and maybe for things like pattern selection. But zooming to edit entities within a document is something I still struggle to picture a bit. I worry it could get a little nebulous; zooming out of a post to a template, then into a template part like a header, then into a navigation menu, then back in to the original post. All the while being careful not to conflate pages and templates.

As an alternative I've been playing with a simpler approach, somewhat inspired by the spotlight mode we have. In the video below I'm editing a page, but am able to easily move between other entities like the header and the menu without losing context. This dynamic could work exactly the same when editing a template.

spotlight.mp4

Access to edit the contents of secondary entities is gated behind an "Edit" button. This could be augmented with a double-click action, or any other ways we can think of. I do think the added friction is helpful though because it helps indicate when you're editing something different.

I know there's not really anything new here. We've explored these things before. But I wonder if something like this could serve as an interim? It circumvents the awkward back button and lays a rough foundation for potential zoom behaviours in the future.

@noisysocks noisysocks added [Type] Enhancement A suggestion for improvement. Needs Design Feedback Needs general design feedback. labels Sep 15, 2021
@jasmussen
Copy link
Contributor

But zooming to edit entities within a document is something I still struggle to picture a bit. I worry it could get a little nebulous; zooming out of a post to a template, then into a template part like a header, then into a navigation menu, then back in to the original post. All the while being careful not to conflate pages and templates.

It does run the risk of being too fancy and ultimately confusing, so it definitely hinges on the right implementation to work. On the flipside, animation and zooming if done just right can help establish context such as point of origin, destination, and focus by virtue of motion alone.

Even without motion, because it will be turned off for people with the prefers-reduced-motion option, it feels important to keep the canvas context, which your prototype does excellently, and it doesn't seem like it would preclude adding motion at a later point, would you agree? In that vein it seems like a great starting point.

@jameskoster
Copy link
Contributor

Yes, agreed on all points. Getting the zoom animation right will be a task all on its own, and may take a few iterations to get it feeling right. So laying some foundations for the spirit of the interaction now – in a way that avoids the pesky "<- Back" button – makes sense to me.

There are a couple of pieces missing to make the prototype I shared above work as intended, most notably the overlay + edit button in the toolbar when selecting entities like template parts. Perhaps we can add that to #34679, what do you think @kevin940726?

@jameskoster
Copy link
Contributor

Had a chat with Matias today. In the interest of getting the isolated view to a good spot let's push forward with back button for now since that aligns with the page -> template edit flow in the post editor. We can circle back to explore that interaction in more detail later.

So going back to the original feedback, can we try making the back button appear only when you access the isolated view from either the 'edit template part menu button' or the list view? Not from the sidebar menu.

As we aren't 100% sure what the interaction will look like for moving back and forth between content/template/template part in the long term, we can probably leave the browser back button support out for now as well.

@kevin940726 kevin940726 force-pushed the add/isolated-template-part-editor-back-button branch from 5db3be6 to 34ce49b Compare September 24, 2021 02:38
@jameskoster
Copy link
Contributor

Only show background in focus mode

Apologies if this is still in progress, but to clarify: I think we should always show the background (as described in the tracking issue). It's just the "<- Back" button that should appear situationally.

We can also probably have the button simply read "<- Back" and omit the template name. In some situations displaying the template name can be more confusing. For example "<- Back to Page" could be interpreted in a couple of different ways, and things will get worse when we consider custom templates where folks might use a name that matches the content. This would also align with the back button in the post editor.

Copy link
Member

@noisysocks noisysocks left a comment

Choose a reason for hiding this comment

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

Might be worth ditching useTemplatePart but aside from that this looks perfect 👍

Copy link
Contributor

@jameskoster jameskoster left a comment

Choose a reason for hiding this comment

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

Working well now, even with nested template parts 🚀

@kevin940726 kevin940726 merged commit 85a3d56 into trunk Sep 28, 2021
@kevin940726 kevin940726 deleted the add/isolated-template-part-editor-back-button branch September 28, 2021 02:00
@github-actions github-actions bot added this to the Gutenberg 11.7 milestone Sep 28, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Template Editing Mode Related to the template editor available in the Block Editor Needs Design Feedback Needs general design feedback. [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants