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

Updates the behavior of the top toolbar fixed setting #49634

Merged
merged 27 commits into from Apr 19, 2023

Conversation

draganescu
Copy link
Contributor

@draganescu draganescu commented Apr 6, 2023

What?

Closes #40450

Updates the behavior of the top toolbar fixed setting.

Why?

Because verical screen estate is scarce and.

How?

  • updates on desktop sized viewports the position of the fixed toolbar
  • updates the z-index of the interface header to be lower to that block toolbar shows up on top
  • implements a toggle expanded/collapsed for block contextual toolbar

Testing Instructions

  1. Enable the Top Toolbar setting from the top right dot menu
  2. Select a block
  3. Notice the block tools (toolbar) replaces the document tools (toolbar)
  4. This also works by default in the Site editor

Testing Instructions for Keyboard

  1. Select a block
  2. Press Shift + Tab, the focus should move to the block toolbar
  3. Select a block
  4. Press Alt + F10 , the focus should move to the block toolbar
  5. Select a block
  6. Press Ctrl + Shift + ~ to select 1st navigable region
  7. Press Tab, the focus should move to the inserter
  8. Use arrow right, the focus should move to document tools buttons
  9. Select a block
  10. Press Shit + Tab
  11. In the block toolbar press the Collapse Block Tools button, the focus should be on Expand Block Tools button
  12. Press the Expand Block Tools button, the focus should be on Collapse Block Tools button

Screenshots or screencast

top-toolbar-goodkeyboard.mp4

Known issues

  • When the post edtor is not full screen 💥 it's all wrong
  • The Collapse Block Tools button sometimes gets focus when it shouldn't
  • When the block toolbar is focused the tooltip of document tools appears 🤷🏻
  • Distraction Free does not inherit this, there still are no block tools when DFM is on
  • In the Site Editor there is a vertical allignment issue
  • In the Site Editor focusing the header region does not hide the block toolbar

@github-actions
Copy link

github-actions bot commented Apr 6, 2023

Size Change: +1.54 kB (0%)

Total Size: 1.37 MB

Filename Size Change
build/block-editor/index.min.js 203 kB +493 B (0%)
build/block-editor/style-rtl.css 15.1 kB +462 B (+3%)
build/block-editor/style.css 15.1 kB +452 B (+3%)
build/edit-post/style-rtl.css 7.63 kB +23 B (0%)
build/edit-post/style.css 7.63 kB +23 B (0%)
build/edit-site/index.min.js 64.5 kB +29 B (0%)
build/edit-site/style-rtl.css 10.1 kB +31 B (0%)
build/edit-site/style.css 10.1 kB +31 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 993 B
build/annotations/index.min.js 2.78 kB
build/api-fetch/index.min.js 2.27 kB
build/autop/index.min.js 2.15 kB
build/blob/index.min.js 483 B
build/block-directory/index.min.js 7.2 kB
build/block-directory/style-rtl.css 1.04 kB
build/block-directory/style.css 1.04 kB
build/block-editor/content-rtl.css 4.17 kB
build/block-editor/content.css 4.17 kB
build/block-editor/default-editor-styles-rtl.css 403 B
build/block-editor/default-editor-styles.css 403 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 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 138 B
build/block-library/blocks/audio/theme.css 138 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 91 B
build/block-library/blocks/avatar/style.css 91 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 587 B
build/block-library/blocks/button/editor.css 587 B
build/block-library/blocks/button/style-rtl.css 628 B
build/block-library/blocks/button/style.css 627 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 409 B
build/block-library/blocks/columns/style.css 409 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 649 B
build/block-library/blocks/cover/editor.css 651 B
build/block-library/blocks/cover/style-rtl.css 1.61 kB
build/block-library/blocks/cover/style.css 1.6 kB
build/block-library/blocks/details-summary/editor-rtl.css 65 B
build/block-library/blocks/details-summary/editor.css 65 B
build/block-library/blocks/details-summary/style-rtl.css 61 B
build/block-library/blocks/details-summary/style.css 61 B
build/block-library/blocks/details/style-rtl.css 54 B
build/block-library/blocks/details/style.css 54 B
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 410 B
build/block-library/blocks/embed/style.css 410 B
build/block-library/blocks/embed/theme-rtl.css 138 B
build/block-library/blocks/embed/theme.css 138 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 269 B
build/block-library/blocks/file/style.css 270 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 984 B
build/block-library/blocks/gallery/editor.css 988 B
build/block-library/blocks/gallery/style-rtl.css 1.55 kB
build/block-library/blocks/gallery/style.css 1.55 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 654 B
build/block-library/blocks/group/editor.css 654 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 340 B
build/block-library/blocks/html/editor.css 341 B
build/block-library/blocks/image/editor-rtl.css 830 B
build/block-library/blocks/image/editor.css 829 B
build/block-library/blocks/image/style-rtl.css 652 B
build/block-library/blocks/image/style.css 652 B
build/block-library/blocks/image/theme-rtl.css 137 B
build/block-library/blocks/image/theme.css 137 B
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 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 507 B
build/block-library/blocks/media-text/style.css 505 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 716 B
build/block-library/blocks/navigation-link/editor.css 715 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/editor-rtl.css 2.13 kB
build/block-library/blocks/navigation/editor.css 2.14 kB
build/block-library/blocks/navigation/style-rtl.css 2.22 kB
build/block-library/blocks/navigation/style.css 2.21 kB
build/block-library/blocks/navigation/view-modal.min.js 2.81 kB
build/block-library/blocks/navigation/view.min.js 447 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 401 B
build/block-library/blocks/page-list/editor.css 401 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 174 B
build/block-library/blocks/paragraph/editor.css 174 B
build/block-library/blocks/paragraph/style-rtl.css 279 B
build/block-library/blocks/paragraph/style.css 281 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 501 B
build/block-library/blocks/post-comments-form/style.css 501 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 588 B
build/block-library/blocks/post-featured-image/editor.css 586 B
build/block-library/blocks/post-featured-image/style-rtl.css 322 B
build/block-library/blocks/post-featured-image/style.css 322 B
build/block-library/blocks/post-navigation-link/style-rtl.css 153 B
build/block-library/blocks/post-navigation-link/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 281 B
build/block-library/blocks/post-template/style.css 281 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 103 B
build/block-library/blocks/preformatted/style.css 103 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 335 B
build/block-library/blocks/pullquote/style.css 335 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 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 463 B
build/block-library/blocks/query/editor.css 463 B
build/block-library/blocks/quote/style-rtl.css 222 B
build/block-library/blocks/quote/style.css 222 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 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 165 B
build/block-library/blocks/search/editor.css 165 B
build/block-library/blocks/search/style-rtl.css 408 B
build/block-library/blocks/search/style.css 406 B
build/block-library/blocks/search/theme-rtl.css 114 B
build/block-library/blocks/search/theme.css 114 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 234 B
build/block-library/blocks/separator/style.css 234 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 329 B
build/block-library/blocks/shortcode/editor.css 329 B
build/block-library/blocks/site-logo/editor-rtl.css 489 B
build/block-library/blocks/site-logo/editor.css 489 B
build/block-library/blocks/site-logo/style-rtl.css 203 B
build/block-library/blocks/site-logo/style.css 203 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 674 B
build/block-library/blocks/social-links/editor.css 673 B
build/block-library/blocks/social-links/style-rtl.css 1.4 kB
build/block-library/blocks/social-links/style.css 1.39 kB
build/block-library/blocks/spacer/editor-rtl.css 359 B
build/block-library/blocks/spacer/editor.css 359 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 433 B
build/block-library/blocks/table/editor.css 433 B
build/block-library/blocks/table/style-rtl.css 651 B
build/block-library/blocks/table/style.css 650 B
build/block-library/blocks/table/theme-rtl.css 157 B
build/block-library/blocks/table/theme.css 157 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 404 B
build/block-library/blocks/template-part/editor.css 404 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 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 179 B
build/block-library/blocks/video/style.css 179 B
build/block-library/blocks/video/theme-rtl.css 139 B
build/block-library/blocks/video/theme.css 139 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.12 kB
build/block-library/common.css 1.12 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/editor-rtl.css 11.6 kB
build/block-library/editor.css 11.6 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/index.min.js 204 kB
build/block-library/reset-rtl.css 478 B
build/block-library/reset.css 478 B
build/block-library/style-rtl.css 12.8 kB
build/block-library/style.css 12.8 kB
build/block-library/theme-rtl.css 698 B
build/block-library/theme.css 703 B
build/block-serialization-default-parser/index.min.js 1.13 kB
build/block-serialization-spec-parser/index.min.js 2.83 kB
build/blocks/index.min.js 51.1 kB
build/commands/index.min.js 14.8 kB
build/commands/style-rtl.css 789 B
build/commands/style.css 786 B
build/components/index.min.js 208 kB
build/components/style-rtl.css 11.7 kB
build/components/style.css 11.7 kB
build/compose/index.min.js 12.4 kB
build/core-data/index.min.js 16.3 kB
build/customize-widgets/index.min.js 12.2 kB
build/customize-widgets/style-rtl.css 1.41 kB
build/customize-widgets/style.css 1.41 kB
build/data-controls/index.min.js 718 B
build/data/index.min.js 8.68 kB
build/date/index.min.js 40.4 kB
build/deprecated/index.min.js 518 B
build/dom-ready/index.min.js 336 B
build/dom/index.min.js 4.76 kB
build/edit-post/classic-rtl.css 571 B
build/edit-post/classic.css 571 B
build/edit-post/index.min.js 35 kB
build/edit-widgets/index.min.js 17.3 kB
build/edit-widgets/style-rtl.css 4.56 kB
build/edit-widgets/style.css 4.56 kB
build/editor/index.min.js 45.9 kB
build/editor/style-rtl.css 3.49 kB
build/editor/style.css 3.48 kB
build/element/index.min.js 4.95 kB
build/escape-html/index.min.js 548 B
build/format-library/index.min.js 7.26 kB
build/format-library/style-rtl.css 557 B
build/format-library/style.css 556 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.79 kB
build/keycodes/index.min.js 1.94 kB
build/list-reusable-blocks/index.min.js 2.14 kB
build/list-reusable-blocks/style-rtl.css 865 B
build/list-reusable-blocks/style.css 865 B
build/media-utils/index.min.js 2.99 kB
build/notices/index.min.js 977 B
build/plugins/index.min.js 1.94 kB
build/preferences-persistence/index.min.js 2.23 kB
build/preferences/index.min.js 1.35 kB
build/primitives/index.min.js 960 B
build/priority-queue/index.min.js 1.52 kB
build/private-apis/index.min.js 942 B
build/react-i18n/index.min.js 702 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.75 kB
build/reusable-blocks/index.min.js 2.26 kB
build/reusable-blocks/style-rtl.css 265 B
build/reusable-blocks/style.css 265 B
build/rich-text/index.min.js 11.1 kB
build/server-side-render/index.min.js 2.09 kB
build/shortcode/index.min.js 1.52 kB
build/style-engine/index.min.js 1.55 kB
build/token-list/index.min.js 650 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.8 kB
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 1.09 kB
build/warning/index.min.js 280 B
build/widgets/index.min.js 7.3 kB
build/widgets/style-rtl.css 1.18 kB
build/widgets/style.css 1.18 kB
build/wordcount/index.min.js 1.06 kB

compressed-size-action

@draganescu draganescu self-assigned this Apr 6, 2023
@draganescu draganescu added [Type] Enhancement A suggestion for improvement. General Interface Parts of the UI which don't fall neatly under other labels. Needs Accessibility Feedback Need input from accessibility labels Apr 6, 2023
@draganescu draganescu marked this pull request as ready for review April 6, 2023 12:25
@github-actions
Copy link

github-actions bot commented Apr 6, 2023

Flaky tests detected in 694f03d.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/4731389090
📝 Reported issues:

@richtabor

This comment was marked as resolved.

@richtabor
Copy link
Member

Perhaps as a follow-up we could try exploring a more graceful expand/collapse with animation. Would make it clearer for visual-based users to understand context of the controls/swapping the toolbars.

@richtabor
Copy link
Member

One bit I'm not sure about, but would appreciate context, is if you collapse the toolbar, its always collapsed. Is that the expected behavior?

CleanShot.2023-04-06.at.10.25.08.mp4

@draganescu
Copy link
Contributor Author

One bit I'm not sure about, but would appreciate context, is if you collapse the toolbar, its always collapsed. Is that the expected behavior?

I don't know but I think it's better if the toggle sticks.

@sabernhardt
Copy link
Contributor

sabernhardt commented Apr 6, 2023

Please do not move the fixed toolbar. Vertical screen estate can be scarce, even on my 1366×643 window, but this option is worth the 49 pixels so I know exactly where the block toolbar is at all times. And I would continue to use the document-related buttons without needing to toggle that toolbar open and then open either the block inserter or outline view. I know the keyboard shortcut for Undo, but adding another button to activate before showing the undo and redo buttons (which also have arrow icons) is not helpful for anyone who needs them.

@draganescu
Copy link
Contributor Author

@sabernhardt I totally agree the collapsing is not ideal, but is is in my opinion a good trade off:

  • the buttons that are hidden are:
    • undo/redo which most users access via the universal keyboard shortcuts
    • the list view, which is not as used as undo or redo or the inserter, but it is very important
  • yet due to collapsing
    • the inserter is always visible
    • we now have room for parent selector
    • we still hold to header room for other header items, but still allow the block toolbar to grow
    • you have the option to keep the block toolbar collapsed, for when you need to work with the list view more, for instance
    • the dropdowns that open from the toolbar (block switcher, align menus, duotone etc) are closer to the top of the screen, saving even more screen estate and minimizing the annoying overlap which obscurs the destination of the change

It looks like a worth it trade off.

It's not only about the 49 pixels in height (out of 643, which are even less for the canvas) - but even this number on such screens is pretty big - in your case it's ~50 pixels out of ~420 vertical available, 11% of screen area won back. That is quite significant at low screen resolutions.

But beyond this it's a gain in functionality which, yes, adds a complication, but it makes a setting less broken. The block editors are not desktop applications, and even less document processors. They live inside other chrome and need new models of interaction adjusted to the nature of their primary interface which is the block.

What do you think?

@jasmussen
Copy link
Contributor

jasmussen commented Apr 10, 2023

Took this for a spin. GIF showing how it's covering the content on the right:

test top toolbar

I think this is moving in the right direction, and lets us keep a single unified toolbar as long as possible, while still accommodating the breadth of very very wide block toolbars possible.

This is especially true when the "show text labels" option is enabled:
Screenshot 2023-04-10 at 11 14 10

While that option deserves a ton of love on its own, the fact that it nevertheless somewhat works in this view does suggest it's moving in a decent direction.

It shows an issue though:

Screenshot 2023-04-10 at 11 15 22

See "Options/Options" on the right. It seems like if we are going with this "cover the content" mechanism, we should add a gradient on the right to indicate what's in the front. I think that might be worth it, because then you'd still have access to preview/publish buttons on the wide screens, instead of simply hiding those entirely as was discussed in some of these mockups:

Top Toolbar

Just for reference, another alternative to covering the content on the right, is to compact the block toolbar into a dropdown. This is almost certainly non trivial, but sharing for posterity how Docs does it:

docs

On a design note, the vertical separators are a bit too tall.

Nice work! Coming together well.

@draganescu
Copy link
Contributor Author

The vertical separators being smaller seems more difficult than hiding the toolbar in a dropdown 😂 (not seriously but seriously the way they are done do not allow for much wiggle room in terms of shrinking them - we are using the same toolbar).

The fact that we're positioning the toolbar fixed it cannot be fluid. I can only respond to breakpoints.

@draganescu draganescu force-pushed the try/block-tools-invade-document-tools branch from d6ab100 to e4c3f2b Compare April 10, 2023 10:18
@draganescu
Copy link
Contributor Author

@jasmussen @jameskoster although I love this visually, to me all these problems with responsiveness, text labels, hiding and showing so many affordances, point at this having some hidden UX problem that instead of addressing we force this UX to fit :)

@jasmussen
Copy link
Contributor

although I love this visually, to me all these problems with responsiveness, text labels, hiding and showing so many affordances, point at this having some hidden UX problem that instead of addressing we force this UX to fit :)

Can you elaborate? Although maybe not the most elegant, the mockup I shared in that thread above that hides instead of covers at a particular breakpoint seems like it should work, no?

I agree there are numerous ux problems to fix around text labels and responsiveness in general. But I don't think they are unique to the top toolbar option, and are worth fixing separately.

@draganescu

This comment was marked as resolved.

@jasmussen

This comment was marked as outdated.

@draganescu draganescu force-pushed the try/block-tools-invade-document-tools branch from 1b83a38 to 5356b0a Compare April 18, 2023 17:09
margin-bottom: $grid-unit + $grid-unit-05;
background-color: $gray-300;
position: absolute;
left: 44px;
Copy link
Contributor

Choose a reason for hiding this comment

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

This is probably the sketchiest value of them all, maybe it needs a comment? Is it icon width + icon padding?

Copy link
Contributor

@MaggieCabrera MaggieCabrera left a comment

Choose a reason for hiding this comment

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

I think you did a great job with the CSS here

@scruffian scruffian force-pushed the try/block-tools-invade-document-tools branch from 42e521e to 5356b0a Compare April 19, 2023 11:32
@scruffian scruffian merged commit fb92cc8 into trunk Apr 19, 2023
50 checks passed
@scruffian scruffian deleted the try/block-tools-invade-document-tools branch April 19, 2023 12:11
@github-actions github-actions bot added this to the Gutenberg 15.7 milestone Apr 19, 2023
@mtias
Copy link
Member

mtias commented Apr 24, 2023

Thanks for all the work here! Let's see how it fares :)

@aristath
Copy link
Member

aristath commented Apr 27, 2023

I'm late to the party since this has already been merged, but after testing this new implementation, I ran into some usability issues and it looks like a significant regression. The most noticeable and easy to test regression is when trying to undo multiple changes.
To test this: Add multiple paragraph blocks on a page, then start editing the page like a normal user would: Add a bold word here, some italics there, change the styling of a block and so on. Then, just try to undo 4-5 of the changes you made, and you'll immediately notice the issue; You undo one change, then the toolbar changes to the block toolbar. You need to think and start looking "where did the undo button go"? Then after some searching and trial-and-error, see that you need to go one level up to access the top toolbar, then undo the next change and repeat the process. It's impossible to just undo multiple changes at once.
The context of the toolbar keeps shifting, and it makes day-to-day tasks more difficult to the point of frustration...

Would it be possible to append the block toolbar instead of replacing the top-level one? 🤔 This constant back-and-forth is not a good experience

a11y-wise, I only did a quick 5-minute test, I didn't have the time to do a full review, but it was apparent that this completely broke keyboard navigation, it's not at all easy to do simple tasks 😞

@draganescu
Copy link
Contributor Author

draganescu commented Apr 28, 2023

@aristath the undo problem that you found is a bug: undoing should not expand the collapsed block toolbar. I'll see why that is.

Would it be possible to append the block toolbar instead of replacing the top-level one?

There are screen estate constraints that prevent this.

a11y-wise, I only did a quick 5-minute test

My main concern with this chance was to not break any a11y expectation and this weird implementation which absolutely positions the block toolbar is the only one that managed to keep a11y expectations intact.

The bug that you found is not an a11y bug, it's an UX bug, a poor experience. It's also surprising, not sure what resets the state of the block toolbar.

@ciampo
Copy link
Contributor

ciampo commented Apr 28, 2023

Thank you @draganescu for working on this PR and addressing the feedback, it's greatly appreciated!

I will have to iterate in a future PR to change how the block toolbar component from the block editor packages targets components-* classes instead of just having their own classnames.

Happy to help reviewing that PR once it's ready :)

@annezazu
Copy link
Contributor

annezazu commented May 2, 2023

To test this: Add multiple paragraph blocks on a page, then start editing the page like a normal user would: Add a bold word here, some italics there, change the styling of a block and so on. Then, just try to undo 4-5 of the changes you made, and you'll immediately notice the issue; You undo one change, then the toolbar changes to the block toolbar. You need to think and start looking "where did the undo button go"? Then after some searching and trial-and-error, see that you need to go one level up to access the top toolbar, then undo the next change and repeat the process. It's impossible to just undo multiple changes at once.

Is there any issue open for this? Curious what's being done to follow up here and close the loop. This does seem like a bug. Happy to report an issue if no one else does. @aristath @draganescu

@afercia
Copy link
Contributor

afercia commented May 3, 2023

There are screen estate constraints that prevent this.

There are other options that can be evaluated to work with the space constraints.

On a general note, the accessibility team has always been reporting that an UI that continuously changes making controls continuously appear and disappear is a problem. Nonetheless, this change goes in that direction. While I do understand the good intent, in my experience this kind of 'smart' UIs may seem good at first, but they rarely work for users. I doube this new implementation is any better than what we have now.

A11y-wise there are more issues with this implementation at the point that I wouldn't know where to start. Some quick testing with the keyboard surfaces only some of the most evident ones. I'd encourage everyone to test this new UI with the keyboard first to get an idea of the main issues so that we can continue the conversation with some more context.

On top of keyboard navigation, there are other issues related to the NavigableToolbar ARIA toolbar usage, placement of elements in the DOM, usage of the icons, etc.

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 Accessibility Feedback Need input from accessibility Needs User Documentation Needs new user documentation [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Top Toolbar improvements