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

Try drastic reduced interface #38928

Closed
wants to merge 26 commits into from

Conversation

draganescu
Copy link
Contributor

🚫 Do not do code review, work in progress

Why?

  • The UI of the post editor is so heavy it makes it hard to focus. Things appear and disappear: mostly the floating block toolbar and the insertion point flashes depending where your mouse rests on the screen.
  • Using the top toolbar eats screen real estate.
  • Using reduced interface does not reduce much.
  • Writing and general content creation can be more pleasant on a blank canvas with little chrome to obfuscate line of thought.
  • Having full UI power at the press of a key (ESC) is simple enough.

Description

This PR explores more drastic effects of the "Reduce the interface" setting. Currently this setting only affects bits and pieces:

  • hides the drag handle in the block toolbar
  • hides some icons in the editor top bar

In this exploration the settings does the following:

  • when in normal (edit) mode (not navigation mode)
    • the editor top bar is hidden
    • the block toolbar never appears
    • the insertion point never appears
  • when in navigation mode
    • the editor top bar is shown
    • the block toolbar is the default one (not the breadcrumb)
    • the insertion point shows up on hover and on block drag

Video

drastic-reduced.mp4

What do you think?

Please take this PR for a spin and let me know of your impressions.

I would also improve the following:

  • in navigation mode, pressing ESC should bring one back to edit mode
  • maybe add a "zen mode" instead of reduced interface? As a power user one can invoke all hidden panels with keyboard shortcuts as well, so maybe "power user" mode?
  • in the reduced interface mode (zen, power...) the post publish flow should be callable from the post panel of the sidebar.

@draganescu draganescu added [Type] Enhancement A suggestion for improvement. General Interface Parts of the UI which don't fall neatly under other labels. Needs Design Feedback Needs general design feedback. Needs Technical Feedback Needs testing from a developer perspective. labels Feb 19, 2022
@draganescu draganescu self-assigned this Feb 19, 2022
@github-actions
Copy link

github-actions bot commented Feb 19, 2022

Size Change: +900 B (0%)

Total Size: 1.24 MB

Filename Size Change
build/block-editor/index.min.js 151 kB +64 B (0%)
build/edit-post/index.min.js 30.7 kB +359 B (+1%)
build/edit-post/style-rtl.css 7.3 kB +229 B (+3%)
build/edit-post/style.css 7.29 kB +215 B (+3%)
build/preferences/index.min.js 1.35 kB +33 B (+3%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 993 B
build/annotations/index.min.js 2.75 kB
build/api-fetch/index.min.js 2.27 kB
build/autop/index.min.js 2.15 kB
build/blob/index.min.js 487 B
build/block-directory/index.min.js 6.51 kB
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/default-editor-styles-rtl.css 378 B
build/block-editor/default-editor-styles.css 378 B
build/block-editor/style-rtl.css 14.6 kB
build/block-editor/style.css 14.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 65 B
build/block-library/blocks/archives/style.css 65 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 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/avatar/editor-rtl.css 116 B
build/block-library/blocks/avatar/editor.css 116 B
build/block-library/blocks/avatar/style-rtl.css 59 B
build/block-library/blocks/avatar/style.css 59 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 445 B
build/block-library/blocks/button/editor.css 445 B
build/block-library/blocks/button/style-rtl.css 560 B
build/block-library/blocks/button/style.css 560 B
build/block-library/blocks/buttons/editor-rtl.css 292 B
build/block-library/blocks/buttons/editor.css 292 B
build/block-library/blocks/buttons/style-rtl.css 275 B
build/block-library/blocks/buttons/style.css 275 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 103 B
build/block-library/blocks/code/style.css 103 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 406 B
build/block-library/blocks/columns/style.css 406 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 127 B
build/block-library/blocks/comment-template/style.css 127 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 95 B
build/block-library/blocks/comments/editor.css 95 B
build/block-library/blocks/cover/editor-rtl.css 598 B
build/block-library/blocks/cover/editor.css 599 B
build/block-library/blocks/cover/style-rtl.css 1.56 kB
build/block-library/blocks/cover/style.css 1.56 kB
build/block-library/blocks/embed/editor-rtl.css 293 B
build/block-library/blocks/embed/editor.css 293 B
build/block-library/blocks/embed/style-rtl.css 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 252 B
build/block-library/blocks/file/style.css 253 B
build/block-library/blocks/file/view.min.js 353 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB
build/block-library/blocks/freeform/editor.css 2.44 kB
build/block-library/blocks/gallery/editor-rtl.css 961 B
build/block-library/blocks/gallery/editor.css 964 B
build/block-library/blocks/gallery/style-rtl.css 1.51 kB
build/block-library/blocks/gallery/style.css 1.51 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 333 B
build/block-library/blocks/group/editor.css 333 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 76 B
build/block-library/blocks/heading/style.css 76 B
build/block-library/blocks/html/editor-rtl.css 332 B
build/block-library/blocks/html/editor.css 333 B
build/block-library/blocks/image/editor-rtl.css 738 B
build/block-library/blocks/image/editor.css 737 B
build/block-library/blocks/image/style-rtl.css 529 B
build/block-library/blocks/image/style.css 535 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 199 B
build/block-library/blocks/latest-posts/editor.css 198 B
build/block-library/blocks/latest-posts/style-rtl.css 463 B
build/block-library/blocks/latest-posts/style.css 462 B
build/block-library/blocks/list/style-rtl.css 88 B
build/block-library/blocks/list/style.css 88 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 493 B
build/block-library/blocks/media-text/style.css 490 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 708 B
build/block-library/blocks/navigation-link/editor.css 706 B
build/block-library/blocks/navigation-link/style-rtl.css 115 B
build/block-library/blocks/navigation-link/style.css 115 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 299 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation-submenu/view.min.js 375 B
build/block-library/blocks/navigation/editor-rtl.css 2.03 kB
build/block-library/blocks/navigation/editor.css 2.04 kB
build/block-library/blocks/navigation/style-rtl.css 1.95 kB
build/block-library/blocks/navigation/style.css 1.94 kB
build/block-library/blocks/navigation/view-modal.min.js 2.78 kB
build/block-library/blocks/navigation/view.min.js 395 B
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 363 B
build/block-library/blocks/page-list/editor.css 363 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 157 B
build/block-library/blocks/paragraph/editor.css 157 B
build/block-library/blocks/paragraph/style-rtl.css 260 B
build/block-library/blocks/paragraph/style.css 260 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 69 B
build/block-library/blocks/post-comments-form/editor.css 69 B
build/block-library/blocks/post-comments-form/style-rtl.css 495 B
build/block-library/blocks/post-comments-form/style.css 495 B
build/block-library/blocks/post-comments/editor-rtl.css 77 B
build/block-library/blocks/post-comments/editor.css 77 B
build/block-library/blocks/post-comments/style-rtl.css 628 B
build/block-library/blocks/post-comments/style.css 628 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 721 B
build/block-library/blocks/post-featured-image/editor.css 721 B
build/block-library/blocks/post-featured-image/style-rtl.css 153 B
build/block-library/blocks/post-featured-image/style.css 153 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 323 B
build/block-library/blocks/post-template/style.css 323 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 80 B
build/block-library/blocks/post-title/style.css 80 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 370 B
build/block-library/blocks/pullquote/style.css 370 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 234 B
build/block-library/blocks/query-pagination/style.css 231 B
build/block-library/blocks/query/editor-rtl.css 369 B
build/block-library/blocks/query/editor.css 369 B
build/block-library/blocks/quote/style-rtl.css 213 B
build/block-library/blocks/quote/style.css 213 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/read-more/style-rtl.css 132 B
build/block-library/blocks/read-more/style.css 132 B
build/block-library/blocks/rss/editor-rtl.css 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 402 B
build/block-library/blocks/search/style.css 403 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 146 B
build/block-library/blocks/separator/editor.css 146 B
build/block-library/blocks/separator/style-rtl.css 233 B
build/block-library/blocks/separator/style.css 233 B
build/block-library/blocks/separator/theme-rtl.css 194 B
build/block-library/blocks/separator/theme.css 194 B
build/block-library/blocks/shortcode/editor-rtl.css 474 B
build/block-library/blocks/shortcode/editor.css 474 B
build/block-library/blocks/site-logo/editor-rtl.css 759 B
build/block-library/blocks/site-logo/editor.css 759 B
build/block-library/blocks/site-logo/style-rtl.css 192 B
build/block-library/blocks/site-logo/style.css 192 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 84 B
build/block-library/blocks/site-title/editor.css 84 B
build/block-library/blocks/social-link/editor-rtl.css 177 B
build/block-library/blocks/social-link/editor.css 177 B
build/block-library/blocks/social-links/editor-rtl.css 674 B
build/block-library/blocks/social-links/editor.css 673 B
build/block-library/blocks/social-links/style-rtl.css 1.37 kB
build/block-library/blocks/social-links/style.css 1.36 kB
build/block-library/blocks/spacer/editor-rtl.css 332 B
build/block-library/blocks/spacer/editor.css 332 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 504 B
build/block-library/blocks/table/editor.css 504 B
build/block-library/blocks/table/style-rtl.css 625 B
build/block-library/blocks/table/style.css 625 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 226 B
build/block-library/blocks/tag-cloud/style.css 227 B
build/block-library/blocks/template-part/editor-rtl.css 149 B
build/block-library/blocks/template-part/editor.css 149 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 87 B
build/block-library/blocks/verse/style.css 87 B
build/block-library/blocks/video/editor-rtl.css 561 B
build/block-library/blocks/video/editor.css 563 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 993 B
build/block-library/common.css 990 B
build/block-library/editor-rtl.css 10.3 kB
build/block-library/editor.css 10.3 kB
build/block-library/index.min.js 181 kB
build/block-library/reset-rtl.css 478 B
build/block-library/reset.css 478 B
build/block-library/style-rtl.css 11.6 kB
build/block-library/style.css 11.6 kB
build/block-library/theme-rtl.css 689 B
build/block-library/theme.css 694 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.83 kB
build/blocks/index.min.js 47.1 kB
build/components/index.min.js 227 kB
build/components/style-rtl.css 13.9 kB
build/components/style.css 13.9 kB
build/compose/index.min.js 11.7 kB
build/core-data/index.min.js 14.6 kB
build/customize-widgets/index.min.js 11.2 kB
build/customize-widgets/style-rtl.css 1.4 kB
build/customize-widgets/style.css 1.4 kB
build/data-controls/index.min.js 663 B
build/data/index.min.js 7.98 kB
build/date/index.min.js 32 kB
build/deprecated/index.min.js 518 B
build/dom-ready/index.min.js 336 B
build/dom/index.min.js 4.69 kB
build/edit-navigation/index.min.js 16 kB
build/edit-navigation/style-rtl.css 4.05 kB
build/edit-navigation/style.css 4.05 kB
build/edit-post/classic-rtl.css 546 B
build/edit-post/classic.css 547 B
build/edit-site/index.min.js 47.9 kB
build/edit-site/style-rtl.css 7.73 kB
build/edit-site/style.css 7.71 kB
build/edit-widgets/index.min.js 16.4 kB
build/edit-widgets/style-rtl.css 4.4 kB
build/edit-widgets/style.css 4.4 kB
build/editor/index.min.js 38.5 kB
build/editor/style-rtl.css 3.71 kB
build/editor/style.css 3.7 kB
build/element/index.min.js 4.3 kB
build/escape-html/index.min.js 548 B
build/format-library/index.min.js 6.62 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.66 kB
build/html-entities/index.min.js 454 B
build/i18n/index.min.js 3.79 kB
build/is-shallow-equal/index.min.js 535 B
build/keyboard-shortcuts/index.min.js 1.8 kB
build/keycodes/index.min.js 1.41 kB
build/list-reusable-blocks/index.min.js 1.75 kB
build/list-reusable-blocks/style-rtl.css 835 B
build/list-reusable-blocks/style.css 835 B
build/media-utils/index.min.js 2.9 kB
build/notices/index.min.js 957 B
build/nux/index.min.js 2.07 kB
build/nux/style-rtl.css 744 B
build/nux/style.css 741 B
build/plugins/index.min.js 1.98 kB
build/preferences-persistence/index.min.js 2.23 kB
build/primitives/index.min.js 949 B
build/priority-queue/index.min.js 628 B
build/react-i18n/index.min.js 704 B
build/react-refresh-entry/index.min.js 8.44 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.69 kB
build/reusable-blocks/index.min.js 2.24 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 11.1 kB
build/server-side-render/index.min.js 1.61 kB
build/shortcode/index.min.js 1.52 kB
build/token-list/index.min.js 668 B
build/url/index.min.js 1.99 kB
build/vendors/react-dom.min.js 38.5 kB
build/vendors/react.min.js 4.34 kB
build/viewport/index.min.js 1.08 kB
build/warning/index.min.js 280 B
build/widgets/index.min.js 7.2 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.07 kB

compressed-size-action

@annezazu
Copy link
Contributor

Just wanted to note that this helps resolve many of the pain points I raised in this previous issue: #34664 Neat to see it explored and I could see myself using it. I personally would love to have it be easier to get the toolbar back though when I need it rather than fully exiting the mode.

@mtias
Copy link
Member

mtias commented Feb 26, 2022

Thanks for exploring this! I have a few thoughts:

  • I wouldn’t remove the top toolbar / header but hide it and show it on hover / focus (if you hover the top area or move focus there). It'd also avoid any visual jumps when toggling this mode.
  • We should probably use distraction free writing for the setting name.
  • No block toolbar is drastic but interesting; if we go with that it feels like there should be an easy / visible way to escape this view.
  • In the past it was mentioned we should have more configuration over spotlight / reduced interface, and ways to combine things. We might need easy toggle in the main ellipsis menu as well to switch between views effortlessly.

@draganescu
Copy link
Contributor Author

Thanks everyone for playing with this, I am going to approach it step by step and apply each suggestion so far. I am happy that it seems to be worth pursuing 🙌🏻

@mtias
Copy link
Member

mtias commented Apr 1, 2022

I think the animation is getting there — we'd probably need to ensure interactions within the toolbar keep it open even if focus is transferred (inserter, block inspector, block list, etc). Or maybe there's another more elegant solution.

@draganescu draganescu force-pushed the try/hide-block-toolbar-before-selection branch from 6bef879 to 989cee9 Compare April 1, 2022 18:58
@draganescu
Copy link
Contributor Author

Lovely animations! I would still want a way in which the text flows under the browser chrome without that white stripe. I tried - before simply removing the component - with some CSS but the layout of the editor is very, very finicky 😁

@draganescu
Copy link
Contributor Author

draganescu commented Apr 2, 2022

Made the toolbar show on hover over some "top area". If this has a quick toggle entering and exiting this "zen mode" is a breeze on the desktop with a mouse. It would also make good use of some KBD shortcut.

hover-header.mp4

With animations and show on hover, the problems we need to figure out are about the layout of the editor:

  • Should opening the sidebars fix the top header? (I think so) cc @jameskoster That means, when I open a sidebar or panel the hover/fade behavior stops, including the animations.
  • To avoid the jumps we should make the header be absolutely positioned in normal mode as well, but that also needs updating all the sidebars and panels which depend on the header pushing them down.
  • The fading is a bit weird to handle since it is set in the interface skeleton package and we're dealing with elements from the edit post store.

Update:

  • the settings need to be passed from each editor in towards the interface package so that we can use editor specific UI state to determine interface behavior (e.g. when sidebars are open the top bar has to remain shown and fixed)

@jameskoster
Copy link
Contributor

Yeah the panels definitely need some thought. I'll ponder that one as time allows.

Another issue I noticed is that if the auto-save banner appears, you can't dismiss it because the top bar appears above it.

I don't know if it would be easy to try, but I think the fadeout behaviour would benefit from a short timeout. IE fade the top bar out 1 second (or so) after the cursor leaves the top area rather than immediately.

@mtias
Copy link
Member

mtias commented Apr 5, 2022

Also a slight delay to trigger it might be useful in case you are just moving the cursor around while thinking. I'll look into it.

margin-top: -60px;

.interface-interface-skeleton__content {
padding-top: 60px;
Copy link
Contributor

Choose a reason for hiding this comment

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

It would be nice to do something the awkward gap this creates when the document background isn't white:

gap.mp4

Copy link
Member

Choose a reason for hiding this comment

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

I assumed this wasn't going to work as easily :D Maybe we can copy the bg color, or extend the actual content, at least in the post-editor.

Copy link
Contributor

Choose a reason for hiding this comment

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

Yeah applying the background to .edit-post-layout or something could work for now.

It's probably important to keep the gap, to account for selecting the very first block when there's no internal padding on the document.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I wonder If the toolbar should reposition below the block instead of needing this gap

Copy link
Contributor

Choose a reason for hiding this comment

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

A similar issue exists with the sidebars as well :D

Screenshot 2022-04-06 at 11 47 34

Copy link
Member

Choose a reason for hiding this comment

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

It'd be nice to try and make them float like popovers in this mode

Copy link
Contributor Author

@draganescu draganescu May 4, 2022

Choose a reason for hiding this comment

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

@mtias @jameskoster This gap thing is easily solved by positioning the header as absolute and giving it 100vw width. See b9ecd05 (also cc @shaunandrews as this commit shows persistent sidebars as well).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

persistent-sidebars.mp4

@shaunandrews here is the compromise: a somewhat ugly margin on floating chrome. Otherwise there is a z-index war between the top chrome and the side chrome which wither makes the sidebars impossible to close or the top bar's buttons inaccessible.

Hmm there would be an option to fiddle with z-index on hover/focus?

@jameskoster
Copy link
Contributor

I wanted to try a delay on hiding the top bar as well. Feel free to revert or fix my code.

Essentially I wanted to change:

jumpy

into:

no-jumpy

I think trackpad users with widescreens will appreciate this.

@jameskoster
Copy link
Contributor

I wonder if we should be a little wary of throwing the baby out with the bathwater here... is hiding block toolbars outright too blunt an instrument? Similarly, does the visual persistence of the Inspector break the 'distraction free' promise, or could that element feel more 'on demand'?

It would be interesting to contemplate ways we might 'intelligently focus' areas of the UI based on the last current action. As a rough example, perhaps when I select text within a block the Inspector is temporarily hidden, and a streamlined block toolbar exposed? Likewise keypresses (typing) could toggle all visible UI, and cursor movement could reveal it again.

focus.mp4

Totally appreciate it might be hard to account for all different behaviour combinations and subsequent reactive UI display :)

@draganescu
Copy link
Contributor Author

draganescu commented Apr 6, 2022

@jameskoster

I wonder if we should be a little wary of throwing the baby out with the bathwater here... is hiding block toolbars outright too blunt an instrument?

In this exploration, while in the distraction free mode the block toolbar is available when pressing ESC replacing the black navigation mode block toolbar.

does the visual persistence of the Inspector break the 'distraction free' promise

In #40094 having a sidebar open exists the distraction free mode until the sidebar is closed. Some sidebars are auto closing on lost focus some have to be closed from their close button.

@jameskoster
Copy link
Contributor

the block toolbar is available when pressing ESC

Thanks that's good to know, but it's not all that discoverable for the average user. To further distill my thoughts; 'distraction free writing' shouldn't simply translate to 'hide everything' :D It's probably a good place to start, but we need to ensure that common writing tasks still feel fluid.

Thanks for putting that PR together, I'll take a look. But to clarify, my comment above was more conversational than instructional. It might be good to outline some defining principles for this mode?

@draganescu
Copy link
Contributor Author

draganescu commented Apr 6, 2022

my comment above was more conversational than instructional.

Absolutely! I am excited to see investment in this 👏🏻 Thank you!

Coming back to the conversation here and here, in general, distraction free does hide everything. Figma's Cmd + \ shows nothing but the canvas. Excalidraw keeps only the toolbox around. Even Word's focus mode hides everything.

Distraction free, in this approach, is intentionally more drastic than a "light UI" mode - which can very well be better IF the achieved "lightness" is light enough to not be distracting.

Also, in the mentioned apps and others, wanting specific results for which keyboard shortcuts don't exist or are not known, will bring the UI back, either by an on purpose exit from distraction free (in Figma one needs to exit with Cmd + \ ) or by bringing distraction back via hover or other interaction.

In the #40094 alternative we have a combination where via hover you can bring some distraction back. That works great with keyboard, for example using Cmd + Shift + , while everything is hidden allows you to edit the currently focused block's settings that are unavailable otherwise. Same with navigating to other blocks via Listview, using Cmd + Option + O then arrow keys.

It might be good to outline some defining principles for this mode?

Sure thing. We can also find them by doing small attempts, iteratively, right?

@jameskoster
Copy link
Contributor

We can also find them by doing small attempts, iteratively, right?

Totally, and apologies if I'm digging up bones, I'm coming to this totally fresh.

So what is the ambition here?

  1. A Figma-style 'Show UI' command that holistically toggles the UI visibility?
  2. A 'writing' mode that optimises the default UI for long-form writing?

They feel like distinct things to me.

@mtias
Copy link
Member

mtias commented Apr 6, 2022

I wouldn't call this a writing mode per se because for some people the best writing environment would be the default one, or top toolbar; for others it might be spotlight, etc. The "reduced interface" (which I hope to rename "distraction free") is more about removing UI from the canvas and working more with keyboard and shortcuts.

@jameskoster
Copy link
Contributor

Got it, thanks.

In that case I think we should continue to pursue the idea of 'detaching' panels from the top bar so that they float on the canvas. This would be less ambiguous than something like #40094 which leaves me unsure which mode I'm in when I begin to interact with things like the Inspector.

@draganescu
Copy link
Contributor Author

draganescu commented Apr 6, 2022

'detaching' panels from the top bar

Yes, I like this too 👍🏻 We should detach interface elements from each other in this mode and from the canvas. Ideally (no idea if possible) they'd all appear on hover and hover on top of the content. I'll try an exploration, with hopes it does not require some huge refactoring of the interface package's CSS 🙏🏻 Also bringing things on hover into visibility always produces weird interactions with the things they hover over.

  1. A Figma-style 'Show UI' command that holistically toggles the UI visibility?
  2. A 'writing' mode that optimises the default UI for long-form writing?

I think somewhere between these would be ideal. Once the cross block text selection solves cut/copy as well, the writing mode is built in. This is more about offering options to hide UI which cannot be hidden now, in hopes of lowering items appearing and disappearing while writing. I would also not call it writing mode because the block editor is not a text editor and I think distraction free is useful for page building as well, seeing all the canvas without any chrome cluttering it, and working with keyboard without relying on visual helpers.

This would be less ambiguous than something like #40094 which leaves me unsure which mode I'm in when I begin to interact with things like the Inspector.

What if there is something that tells you that "distraction free" mode is on so you'd expect the UI to disappear when closing panels? Maybe a toggle in the top bar or a floating "exit distraction free mode" button? This would be easier to achieve than the floating panels, potentially.

Andrei Draganescu and others added 26 commits June 8, 2022 12:21
- site icon and W menu slide from left
- toolbar items slide from top
They feel unnecessary with the floating elevation
Partially fade panels rather than hiding them entirely.
…t for wp button, tools and publish, moves the distraction free css to post editor header css, introduces disabled as a prop for preference menu item TBD
@draganescu draganescu force-pushed the try/hide-block-toolbar-before-selection branch from d76ae06 to 04ab5b3 Compare June 8, 2022 09:21
@draganescu
Copy link
Contributor Author

In the interest of keeping this actionable I will close this PR and make a new one to continue work on.

@draganescu draganescu closed this Jun 15, 2022
@draganescu draganescu mentioned this pull request Jun 15, 2022
10 tasks
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. Needs Design Feedback Needs general design feedback. Needs Technical Feedback Needs testing from a developer perspective. [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants