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

Site Editor: Persistent List View #28637

Merged
merged 34 commits into from Mar 2, 2021
Merged

Conversation

Copons
Copy link
Contributor

@Copons Copons commented Feb 1, 2021

Description

Fixes #27395

Convert the List View dropdown into a persistent sidebar occupying the same interface skeleton slot as the Inserter (secondarySidebar).

To achieve this, a number of widespread changes have been made:

  • Create a new components/secondary-sidebar folder containing both the Inserter and the List View file, making the Site Editor's editor.js easier to read.
  • Create a new listViewPanel reducer (and relative action and selector) in the same vein as those for the inserter panel and navigation sidebar. These three reducers are interconnected: only one can be open at any time, so the action that opens one will automatically close the others.
  • Create a new listView icon containing the List View icon, which at this point would have been hardcoded and repeated in 3 different files. Also replace those hardcoded icons with the new one.
  • Replace the use of BlockNavigationDropdown in the Site Editor header with a custom implementation that would fill the secondarySidebar with the BlockNavigationTree component, displaying the entire blocks hierarchy of the content, as opposed to the dropdown, which only shows the currently selected nested hierarchy (e.g. if the site title block is selected, the dropdown would only show up to the header template part).
  • Clicking on an item in the List View sidebar will select the block in the canvas (This is a pre-existing functionality of BlockNavigationTree itself).
  • Reuse the same toggle keyboard shortcut for the post editor List View dropdown: Ctrl+Alt+O (letter o, not number 0; see also the issue).
  • Add a new highlightBlocksOnHover prop to the BlockNavigation component to support highlighting the corresponding block in the canvas on hover and focus.

TODO

Stuff to discuss

The keyboard navigation.
This is complicated, and any changes will affect the original BlockNavigation component itself.
What makes things awkward is that selecting a block in the BlockNavigation moves the focus to the canvas, and selecting blocks in the canvas will change the BlockNavigation selected item.
A common scenario would be:

  1. Open the sidebar.
  2. Move with the up/down keys: this only highlights the items with a border, not select them.
  3. Hit enter: this will select the item (it becomes black), and move the focus to the block in the canvas (without any obvious visual clues).
  4. Move with up/down: this will actually move between blocks, which in turns moves the selected item in the sidebar.
  5. The user (me in this case) is now lost. The only way to return the focus to the sidebar is toggle it off and on again.

In other words: once the user selects an item in the sidebar, the vertical traversal changes.
Whereas one would expect that traversing the block list is just a matter of going up/down, traversing the canvas is a different matter.
Horizontally aligned blocks might want an horizontal movement instead, practically blocking the traversal.

How has this been tested?

  • Install and activate a FSE-enabled theme such as TT1-Blocks.
  • Open the Site Editor.
  • Click on the "List View" icon, or use the Ctrl+Alt+O shortcut.
  • Make sure the List View sidebar pops up.
  • Play around with it to see if it works (or not) as expected.
  • Make sure only one of these sidebar can be open at any time: list view, inserter, navigation.

Screenshots

(Ignore the unstyled canvas, it's an unrelated issue)

Screenshot 2021-02-02 at 12 37 30

Types of changes

New feature (non-breaking change which adds functionality)

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • 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.

@github-actions
Copy link

github-actions bot commented Feb 1, 2021

Size Change: +845 B (0%)

Total Size: 1.39 MB

Filename Size Change
build/a11y/index.js 1.14 kB -2 B (0%)
build/annotations/index.js 3.79 kB -3 B (0%)
build/api-fetch/index.js 3.4 kB -2 B (0%)
build/block-editor/index.js 125 kB +21 B (0%)
build/block-library/index.js 148 kB +5 B (0%)
build/components/index.js 272 kB +10 B (0%)
build/compose/index.js 11.1 kB +1 B (0%)
build/core-data/index.js 16.8 kB -1 B (0%)
build/customize-widgets/index.js 4.09 kB +1 B (0%)
build/data-controls/index.js 830 B -1 B (0%)
build/data/index.js 8.86 kB -5 B (0%)
build/date/index.js 31.8 kB -1 B (0%)
build/edit-navigation/index.js 11 kB +2 B (0%)
build/edit-post/index.js 307 kB -5 B (0%)
build/edit-site/index.js 27.1 kB +714 B (+3%)
build/edit-site/style-rtl.css 4.47 kB +53 B (+1%)
build/edit-site/style.css 4.46 kB +53 B (+1%)
build/edit-widgets/index.js 20.2 kB +2 B (0%)
build/editor/index.js 42.1 kB +2 B (0%)
build/format-library/index.js 6.77 kB +4 B (0%)
build/media-utils/index.js 5.36 kB -2 B (0%)
build/nux/index.js 3.41 kB -1 B (0%)
build/plugins/index.js 2.61 kB -1 B (0%)
build/primitives/index.js 1.42 kB +1 B (0%)
build/priority-queue/index.js 790 B -1 B (0%)
build/redux-routine/index.js 2.84 kB +2 B (0%)
build/reusable-blocks/index.js 3.81 kB -1 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/autop/index.js 2.84 kB 0 B
build/blob/index.js 665 B 0 B
build/block-directory/index.js 9.1 kB 0 B
build/block-directory/style-rtl.css 1.01 kB 0 B
build/block-directory/style.css 1.01 kB 0 B
build/block-editor/style-rtl.css 12.1 kB 0 B
build/block-editor/style.css 12.1 kB 0 B
build/block-library/blocks/archives/editor-rtl.css 61 B 0 B
build/block-library/blocks/archives/editor.css 60 B 0 B
build/block-library/blocks/audio/editor-rtl.css 58 B 0 B
build/block-library/blocks/audio/editor.css 58 B 0 B
build/block-library/blocks/audio/style-rtl.css 103 B 0 B
build/block-library/blocks/audio/style.css 103 B 0 B
build/block-library/blocks/block/editor-rtl.css 161 B 0 B
build/block-library/blocks/block/editor.css 161 B 0 B
build/block-library/blocks/button/editor-rtl.css 475 B 0 B
build/block-library/blocks/button/editor.css 474 B 0 B
build/block-library/blocks/button/style-rtl.css 479 B 0 B
build/block-library/blocks/button/style.css 479 B 0 B
build/block-library/blocks/buttons/editor-rtl.css 315 B 0 B
build/block-library/blocks/buttons/editor.css 315 B 0 B
build/block-library/blocks/buttons/style-rtl.css 364 B 0 B
build/block-library/blocks/buttons/style.css 363 B 0 B
build/block-library/blocks/calendar/style-rtl.css 208 B 0 B
build/block-library/blocks/calendar/style.css 208 B 0 B
build/block-library/blocks/categories/editor-rtl.css 84 B 0 B
build/block-library/blocks/categories/editor.css 83 B 0 B
build/block-library/blocks/categories/style-rtl.css 79 B 0 B
build/block-library/blocks/categories/style.css 79 B 0 B
build/block-library/blocks/code/style-rtl.css 90 B 0 B
build/block-library/blocks/code/style.css 90 B 0 B
build/block-library/blocks/columns/editor-rtl.css 190 B 0 B
build/block-library/blocks/columns/editor.css 190 B 0 B
build/block-library/blocks/columns/style-rtl.css 421 B 0 B
build/block-library/blocks/columns/style.css 421 B 0 B
build/block-library/blocks/cover/editor-rtl.css 390 B 0 B
build/block-library/blocks/cover/editor.css 389 B 0 B
build/block-library/blocks/cover/style-rtl.css 1.25 kB 0 B
build/block-library/blocks/cover/style.css 1.25 kB 0 B
build/block-library/blocks/embed/editor-rtl.css 486 B 0 B
build/block-library/blocks/embed/editor.css 486 B 0 B
build/block-library/blocks/embed/style-rtl.css 396 B 0 B
build/block-library/blocks/embed/style.css 395 B 0 B
build/block-library/blocks/file/editor-rtl.css 199 B 0 B
build/block-library/blocks/file/editor.css 198 B 0 B
build/block-library/blocks/file/style-rtl.css 248 B 0 B
build/block-library/blocks/file/style.css 248 B 0 B
build/block-library/blocks/freeform/editor-rtl.css 2.45 kB 0 B
build/block-library/blocks/freeform/editor.css 2.45 kB 0 B
build/block-library/blocks/gallery/editor-rtl.css 689 B 0 B
build/block-library/blocks/gallery/editor.css 690 B 0 B
build/block-library/blocks/gallery/style-rtl.css 1.07 kB 0 B
build/block-library/blocks/gallery/style.css 1.06 kB 0 B
build/block-library/blocks/group/editor-rtl.css 318 B 0 B
build/block-library/blocks/group/editor.css 317 B 0 B
build/block-library/blocks/group/style-rtl.css 57 B 0 B
build/block-library/blocks/group/style.css 57 B 0 B
build/block-library/blocks/heading/editor-rtl.css 129 B 0 B
build/block-library/blocks/heading/editor.css 129 B 0 B
build/block-library/blocks/heading/style-rtl.css 76 B 0 B
build/block-library/blocks/heading/style.css 76 B 0 B
build/block-library/blocks/html/editor-rtl.css 281 B 0 B
build/block-library/blocks/html/editor.css 281 B 0 B
build/block-library/blocks/image/editor-rtl.css 717 B 0 B
build/block-library/blocks/image/editor.css 716 B 0 B
build/block-library/blocks/image/style-rtl.css 477 B 0 B
build/block-library/blocks/image/style.css 478 B 0 B
build/block-library/blocks/latest-comments/editor-rtl.css 159 B 0 B
build/block-library/blocks/latest-comments/editor.css 158 B 0 B
build/block-library/blocks/latest-comments/style-rtl.css 269 B 0 B
build/block-library/blocks/latest-comments/style.css 269 B 0 B
build/block-library/blocks/latest-posts/editor-rtl.css 137 B 0 B
build/block-library/blocks/latest-posts/editor.css 137 B 0 B
build/block-library/blocks/latest-posts/style-rtl.css 523 B 0 B
build/block-library/blocks/latest-posts/style.css 522 B 0 B
build/block-library/blocks/list/editor-rtl.css 65 B 0 B
build/block-library/blocks/list/editor.css 65 B 0 B
build/block-library/blocks/list/style-rtl.css 63 B 0 B
build/block-library/blocks/list/style.css 63 B 0 B
build/block-library/blocks/media-text/editor-rtl.css 191 B 0 B
build/block-library/blocks/media-text/editor.css 191 B 0 B
build/block-library/blocks/media-text/style-rtl.css 535 B 0 B
build/block-library/blocks/media-text/style.css 532 B 0 B
build/block-library/blocks/more/editor-rtl.css 434 B 0 B
build/block-library/blocks/more/editor.css 434 B 0 B
build/block-library/blocks/navigation-link/editor-rtl.css 681 B 0 B
build/block-library/blocks/navigation-link/editor.css 683 B 0 B
build/block-library/blocks/navigation-link/style-rtl.css 694 B 0 B
build/block-library/blocks/navigation-link/style.css 692 B 0 B
build/block-library/blocks/navigation/editor-rtl.css 1.34 kB 0 B
build/block-library/blocks/navigation/editor.css 1.34 kB 0 B
build/block-library/blocks/navigation/style-rtl.css 213 B 0 B
build/block-library/blocks/navigation/style.css 214 B 0 B
build/block-library/blocks/nextpage/editor-rtl.css 395 B 0 B
build/block-library/blocks/nextpage/editor.css 395 B 0 B
build/block-library/blocks/page-list/editor-rtl.css 214 B 0 B
build/block-library/blocks/page-list/editor.css 214 B 0 B
build/block-library/blocks/page-list/style-rtl.css 527 B 0 B
build/block-library/blocks/page-list/style.css 526 B 0 B
build/block-library/blocks/paragraph/editor-rtl.css 109 B 0 B
build/block-library/blocks/paragraph/editor.css 109 B 0 B
build/block-library/blocks/paragraph/style-rtl.css 288 B 0 B
build/block-library/blocks/paragraph/style.css 289 B 0 B
build/block-library/blocks/post-author/editor-rtl.css 209 B 0 B
build/block-library/blocks/post-author/editor.css 209 B 0 B
build/block-library/blocks/post-author/style-rtl.css 183 B 0 B
build/block-library/blocks/post-author/style.css 184 B 0 B
build/block-library/blocks/post-comments-form/style-rtl.css 250 B 0 B
build/block-library/blocks/post-comments-form/style.css 250 B 0 B
build/block-library/blocks/post-content/editor-rtl.css 139 B 0 B
build/block-library/blocks/post-content/editor.css 139 B 0 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B 0 B
build/block-library/blocks/post-excerpt/editor.css 73 B 0 B
build/block-library/blocks/post-featured-image/editor-rtl.css 338 B 0 B
build/block-library/blocks/post-featured-image/editor.css 338 B 0 B
build/block-library/blocks/post-featured-image/style-rtl.css 100 B 0 B
build/block-library/blocks/post-featured-image/style.css 100 B 0 B
build/block-library/blocks/preformatted/style-rtl.css 63 B 0 B
build/block-library/blocks/preformatted/style.css 63 B 0 B
build/block-library/blocks/pullquote/editor-rtl.css 183 B 0 B
build/block-library/blocks/pullquote/editor.css 183 B 0 B
build/block-library/blocks/pullquote/style-rtl.css 316 B 0 B
build/block-library/blocks/pullquote/style.css 316 B 0 B
build/block-library/blocks/query-loop/editor-rtl.css 90 B 0 B
build/block-library/blocks/query-loop/editor.css 89 B 0 B
build/block-library/blocks/query-loop/style-rtl.css 315 B 0 B
build/block-library/blocks/query-loop/style.css 317 B 0 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B 0 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B 0 B
build/block-library/blocks/query-pagination/editor-rtl.css 270 B 0 B
build/block-library/blocks/query-pagination/editor.css 262 B 0 B
build/block-library/blocks/query-pagination/style-rtl.css 168 B 0 B
build/block-library/blocks/query-pagination/style.css 168 B 0 B
build/block-library/blocks/query/editor-rtl.css 814 B 0 B
build/block-library/blocks/query/editor.css 812 B 0 B
build/block-library/blocks/quote/editor-rtl.css 61 B 0 B
build/block-library/blocks/quote/editor.css 61 B 0 B
build/block-library/blocks/quote/style-rtl.css 169 B 0 B
build/block-library/blocks/quote/style.css 169 B 0 B
build/block-library/blocks/rss/editor-rtl.css 201 B 0 B
build/block-library/blocks/rss/editor.css 202 B 0 B
build/block-library/blocks/rss/style-rtl.css 290 B 0 B
build/block-library/blocks/rss/style.css 290 B 0 B
build/block-library/blocks/search/editor-rtl.css 165 B 0 B
build/block-library/blocks/search/editor.css 165 B 0 B
build/block-library/blocks/search/style-rtl.css 342 B 0 B
build/block-library/blocks/search/style.css 344 B 0 B
build/block-library/blocks/separator/editor-rtl.css 99 B 0 B
build/block-library/blocks/separator/editor.css 99 B 0 B
build/block-library/blocks/separator/style-rtl.css 236 B 0 B
build/block-library/blocks/separator/style.css 236 B 0 B
build/block-library/blocks/shortcode/editor-rtl.css 504 B 0 B
build/block-library/blocks/shortcode/editor.css 504 B 0 B
build/block-library/blocks/site-logo/editor-rtl.css 201 B 0 B
build/block-library/blocks/site-logo/editor.css 201 B 0 B
build/block-library/blocks/site-logo/style-rtl.css 115 B 0 B
build/block-library/blocks/site-logo/style.css 115 B 0 B
build/block-library/blocks/social-link/editor-rtl.css 164 B 0 B
build/block-library/blocks/social-link/editor.css 165 B 0 B
build/block-library/blocks/social-links/editor-rtl.css 696 B 0 B
build/block-library/blocks/social-links/editor.css 696 B 0 B
build/block-library/blocks/social-links/style-rtl.css 1.32 kB 0 B
build/block-library/blocks/social-links/style.css 1.32 kB 0 B
build/block-library/blocks/spacer/editor-rtl.css 302 B 0 B
build/block-library/blocks/spacer/editor.css 302 B 0 B
build/block-library/blocks/spacer/style-rtl.css 48 B 0 B
build/block-library/blocks/spacer/style.css 48 B 0 B
build/block-library/blocks/subhead/editor-rtl.css 99 B 0 B
build/block-library/blocks/subhead/editor.css 99 B 0 B
build/block-library/blocks/subhead/style-rtl.css 80 B 0 B
build/block-library/blocks/subhead/style.css 80 B 0 B
build/block-library/blocks/table/editor-rtl.css 478 B 0 B
build/block-library/blocks/table/editor.css 478 B 0 B
build/block-library/blocks/table/style-rtl.css 390 B 0 B
build/block-library/blocks/table/style.css 390 B 0 B
build/block-library/blocks/tag-cloud/editor-rtl.css 118 B 0 B
build/block-library/blocks/tag-cloud/editor.css 118 B 0 B
build/block-library/blocks/tag-cloud/style-rtl.css 94 B 0 B
build/block-library/blocks/tag-cloud/style.css 94 B 0 B
build/block-library/blocks/template-part/editor-rtl.css 557 B 0 B
build/block-library/blocks/template-part/editor.css 556 B 0 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B 0 B
build/block-library/blocks/text-columns/editor.css 95 B 0 B
build/block-library/blocks/text-columns/style-rtl.css 166 B 0 B
build/block-library/blocks/text-columns/style.css 166 B 0 B
build/block-library/blocks/verse/editor-rtl.css 62 B 0 B
build/block-library/blocks/verse/editor.css 62 B 0 B
build/block-library/blocks/verse/style-rtl.css 87 B 0 B
build/block-library/blocks/verse/style.css 87 B 0 B
build/block-library/blocks/video/editor-rtl.css 504 B 0 B
build/block-library/blocks/video/editor.css 503 B 0 B
build/block-library/blocks/video/style-rtl.css 193 B 0 B
build/block-library/blocks/video/style.css 193 B 0 B
build/block-library/common-rtl.css 1.08 kB 0 B
build/block-library/common.css 1.08 kB 0 B
build/block-library/editor-rtl.css 9.52 kB 0 B
build/block-library/editor.css 9.51 kB 0 B
build/block-library/style-rtl.css 8.85 kB 0 B
build/block-library/style.css 8.85 kB 0 B
build/block-library/theme-rtl.css 736 B 0 B
build/block-library/theme.css 736 B 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.06 kB 0 B
build/blocks/index.js 48.3 kB 0 B
build/components/style-rtl.css 15.5 kB 0 B
build/components/style.css 15.5 kB 0 B
build/customize-widgets/style-rtl.css 168 B 0 B
build/customize-widgets/style.css 168 B 0 B
build/deprecated/index.js 769 B 0 B
build/dom-ready/index.js 576 B 0 B
build/dom/index.js 4.95 kB 0 B
build/edit-navigation/style-rtl.css 1.26 kB 0 B
build/edit-navigation/style.css 1.25 kB 0 B
build/edit-post/style-rtl.css 6.81 kB 0 B
build/edit-post/style.css 6.8 kB 0 B
build/edit-widgets/style-rtl.css 3.2 kB 0 B
build/edit-widgets/style.css 3.2 kB 0 B
build/editor/editor-styles-rtl.css 543 B 0 B
build/editor/editor-styles.css 545 B 0 B
build/editor/style-rtl.css 3.9 kB 0 B
build/editor/style.css 3.9 kB 0 B
build/element/index.js 4.62 kB 0 B
build/escape-html/index.js 735 B 0 B
build/format-library/style-rtl.css 637 B 0 B
build/format-library/style.css 639 B 0 B
build/hooks/index.js 2.28 kB 0 B
build/html-entities/index.js 622 B 0 B
build/i18n/index.js 4.01 kB 0 B
build/is-shallow-equal/index.js 698 B 0 B
build/keyboard-shortcuts/index.js 2.54 kB 0 B
build/keycodes/index.js 1.96 kB 0 B
build/list-reusable-blocks/index.js 3.14 kB 0 B
build/list-reusable-blocks/style-rtl.css 629 B 0 B
build/list-reusable-blocks/style.css 628 B 0 B
build/notices/index.js 1.86 kB 0 B
build/nux/style-rtl.css 731 B 0 B
build/nux/style.css 727 B 0 B
build/react-i18n/index.js 1.45 kB 0 B
build/reusable-blocks/style-rtl.css 225 B 0 B
build/reusable-blocks/style.css 225 B 0 B
build/rich-text/index.js 13.5 kB 0 B
build/server-side-render/index.js 2.82 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/url/index.js 3.02 kB 0 B
build/viewport/index.js 1.86 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.22 kB 0 B

compressed-size-action

@Copons Copons changed the title Add/fse persistent block navigator Site Editor: Persistent Block Navigator Feb 1, 2021
@Copons Copons self-assigned this Feb 1, 2021
@Copons Copons added [Feature] List View Menu item in the top toolbar to select blocks from a list of links. [Feature] Site Editor Related to the overarching Site Editor (formerly "full site editing") [Status] In Progress Tracking issues with work in progress [Focus] Accessibility (a11y) Changes that impact accessibility and need corresponding review (e.g. markup changes). labels Feb 1, 2021
@Copons Copons added Needs Accessibility Feedback Need input from accessibility and removed [Status] In Progress Tracking issues with work in progress labels Feb 2, 2021
@Copons Copons marked this pull request as ready for review February 2, 2021 17:01
@Copons
Copy link
Contributor Author

Copons commented Feb 2, 2021

I've opened this for review and added a few points of discussion to the PR description.

@jameskoster
Copy link
Contributor

One nice thing to add would be an indication of the currently-selected-blocks children:

Screenshot 2021-02-03 at 12 24 27

This can be a helpful visual cue for when a block has many innerblocks.


Also wondering if we need the padding around the items?

full-width.mp4

We might give the canvas more room by eliminating it.

On a similar note, the icons feel especially hefty now. I wonder if we might shrink them down a bit here, and tweak the spacing slightly? Here's 16px icons, and 8/12px padding on the buttons:

Screenshot 2021-02-03 at 13 01 47

@jameskoster jameskoster added the Needs Design Feedback Needs general design feedback. label Feb 3, 2021
@Copons Copons changed the title Site Editor: Persistent Block Navigator Site Editor: Persistent List View Feb 3, 2021
@jameskoster
Copy link
Contributor

I made some styling adjustments:

  • Width now matches the Inspector
  • Rows are full width
  • Focus shadow

Additional css classes will be required to achieve this though:

@Copons Copons force-pushed the add/fse-persistent-block-navigator branch 2 times, most recently from 64e8807 to 82527d9 Compare February 4, 2021 15:54
@Copons
Copy link
Contributor Author

Copons commented Feb 4, 2021

@jameskoster I don't think we should have a fixed width: the BlockNavigation component renders a GridTree which internally uses a table element, which has a tendency of overflowing when its contents are larger than the available width.
In other words, this is what happens:

Screenshot 2021-02-04 at 16 03 10

On the other hand, with an automatic width, if we have a very long block name, or a very deeply nested block, we might end up with an exceptionally large sidebar.

Given how the style changes need to be tested carefully, as they risk affecting the BlockNavigation component used elsewhere, I'd propose to move them to a follow-up.
None of them look like blockers to this PR to me, which works (or not! 😄 ) regardless of the items spanning edge-to-edge.

@jameskoster
Copy link
Contributor

I am open to moving general styling to a separate issue, but I think we should get the width sorted in this PR as that feels foundational to the overall usability of this feature.

I do not think the width should vary from page to page, or based on which blocks / nesting exists within the current document. Like you said, there's potential for a large variance which would feel quite disorientating to use.

So, options... I see only two at this point:

  1. Simply hide/truncate the overflow. Not ideal, but there would need to be a lot of nesting for this to cause a significant problem. Curiously this is what Figma does in their Layers panel.
  2. overflow-x: auto;

Any other ideas?

InterfaceSkeleton's secondarySidebar prop always render something unless it's falsy,
so passing a component that renders null is not enough.

By handling the Inserter and List View sidebars visibility
from the parent component, I had to also move the
List View shortcut so that it's always available,
not just when the sidebar is visible.

Props to @jeyip for catching this!
Base automatically changed from master to trunk March 1, 2021 15:45
@Copons Copons force-pushed the add/fse-persistent-block-navigator branch from d812cec to e907eab Compare March 1, 2021 16:13
@Copons
Copy link
Contributor Author

Copons commented Mar 1, 2021

Thanks for the suggestion @Addison-Stavlo!
I got stuck looking across the entire codebase, when the solution was right under my nose.

Pushed your change, and it seems the focus works as expected.

  • Open List View with no selected block: focus on first list item.
  • Open List View with a selected block: focus on corresponding list item.
  • Click on a list item, both selected or otherwise: focus on the corresponding block.

Copy link
Contributor

@Addison-Stavlo Addison-Stavlo left a comment

Choose a reason for hiding this comment

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

Awesome! That works well for me and everything else looks good.
As noted we can follow up on the other design and UX/UI uncertainties, but this seems in a good place to start testing out the feature!

Thanks for all your work on this @Copons !

@gziolo
Copy link
Member

gziolo commented Mar 3, 2021

I noticed the following confusing behavior. When you use arrow keys in List View and press space, then focus moves to the editor. However, you still might have an impression that the arrow up/down lets you navigate between items, but it skips some blocks because you are moving focus between blocks in the editor.

Screen.Recording.2021-03-03.at.17.03.02.mov

@Copons
Copy link
Contributor Author

Copons commented Mar 3, 2021

I noticed the following confusing behavior. When you use arrow keys in List View and press space, then focus moves to the editor. However, you still might have an impression that the arrow up/down lets you navigate between items, but it skips some blocks because you are moving focus between blocks in the editor.

Screen.Recording.2021-03-03.at.17.03.02.mov

@gziolo Yes, we are (painfully) aware of it: #29467 😄

We talked at lenght about it in this PR too (at this point all buried in the hidden comments), we even went back and forth with some visual experiment, and eventually decided to move the discussion to a follow up, to avoid stalling this PR.

Designers are aware of it too, and are thinking of a nice solution as we speak. 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] List View Menu item in the top toolbar to select blocks from a list of links. [Feature] Site Editor Related to the overarching Site Editor (formerly "full site editing") [Focus] Accessibility (a11y) Changes that impact accessibility and need corresponding review (e.g. markup changes). Needs Accessibility Feedback Need input from accessibility Needs Design Feedback Needs general design feedback.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Site Editing: Persistent block navigator and hover indications on the Canvas