Skip to content

Conversation

@getdave
Copy link
Contributor

@getdave getdave commented Aug 11, 2025

What

This PR aligns the behavior of Navigation block appenders between canvas and list view contexts. Currently, the list view appender uses a different insertion flow than the canvas appender, leading to inconsistent user experience.

Why

The Navigation block's list view and canvas contexts should provide consistent appender behavior. Users expect the same insertion experience regardless of whether they're editing in the canvas or using the list view sidebar. This alignment improves the overall user experience and reduces confusion.

This should open the door for improved UX in #71192.

How

  • Enhanced List View Appender: Modified the list view appender to use the same block insertion flow as the canvas appender
  • Unified Block List Settings: Both contexts now respect the same directInsert and defaultBlock settings configured in the Navigation block
  • Consistent LinkUI Integration: List view appender now properly integrates with the Navigation block's LinkUI component for link editing
  • Aligned Cleanup Behavior: Both contexts now handle block cleanup consistently when editing is cancelled or completed

Known follow ups

  • We should change the + inserter tooltip to be Add page in both List View and canvas.
  • We need to fix/update the e2e tests.

Testing

  1. Canvas Context: Verify that Navigation block appender still works as expected with direct insertion
  2. List View Context: Verify that list view appender provides the same insertion experience
  3. LinkUI Integration: Test that both contexts properly open LinkUI for newly inserted blocks
  4. Block Cleanup: Ensure both contexts handle empty/incomplete blocks consistently

Screenshots

Screen.Capture.on.2025-08-14.at.11-46-06.mp4

Key Changes from Trunk

  • List view appender now respects Navigation block's directInsert and defaultBlock settings
  • List view appender properly integrates with Navigation block's LinkUI component
  • Consistent block cleanup behavior between canvas and list view contexts
  • Unified user experience for Navigation block editing across both contexts

@github-actions
Copy link

github-actions bot commented Aug 11, 2025

Size Change: +86 B (0%)

Total Size: 1.92 MB

Filename Size Change
build/block-editor/index.min.js 267 kB +36 B (+0.01%)
build/block-library/index.min.js 233 kB +50 B (+0.02%)
ℹ️ View Unchanged
Filename Size
build-module/a11y/index.min.js 482 B
build-module/block-library/accordion/view.min.js 427 B
build-module/block-library/file/view.min.js 466 B
build-module/block-library/form/view.min.js 533 B
build-module/block-library/image/view.min.js 1.78 kB
build-module/block-library/navigation/view.min.js 1.19 kB
build-module/block-library/query/view.min.js 767 B
build-module/block-library/search/view.min.js 639 B
build-module/interactivity-router/full-page.min.js 565 B
build-module/interactivity-router/index.min.js 11.4 kB
build-module/interactivity/debug.min.js 17.6 kB
build-module/interactivity/index.min.js 14 kB
build/a11y/index.min.js 925 B
build/annotations/index.min.js 2.13 kB
build/api-fetch/index.min.js 2.41 kB
build/autop/index.min.js 2.12 kB
build/blob/index.min.js 579 B
build/block-directory/index.min.js 7.18 kB
build/block-directory/style-rtl.css 1.03 kB
build/block-directory/style.css 1.03 kB
build/block-editor/content-rtl.css 4.43 kB
build/block-editor/content.css 4.42 kB
build/block-editor/default-editor-styles-rtl.css 392 B
build/block-editor/default-editor-styles.css 392 B
build/block-editor/style-rtl.css 15.9 kB
build/block-editor/style.css 15.9 kB
build/block-library/blocks/accordion/style-rtl.css 569 B
build/block-library/blocks/accordion/style.css 568 B
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 61 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 149 B
build/block-library/blocks/audio/editor.css 151 B
build/block-library/blocks/audio/style-rtl.css 132 B
build/block-library/blocks/audio/style.css 132 B
build/block-library/blocks/audio/theme-rtl.css 134 B
build/block-library/blocks/audio/theme.css 134 B
build/block-library/blocks/avatar/editor-rtl.css 115 B
build/block-library/blocks/avatar/editor.css 115 B
build/block-library/blocks/avatar/style-rtl.css 104 B
build/block-library/blocks/avatar/style.css 104 B
build/block-library/blocks/button/editor-rtl.css 265 B
build/block-library/blocks/button/editor.css 265 B
build/block-library/blocks/button/style-rtl.css 554 B
build/block-library/blocks/button/style.css 554 B
build/block-library/blocks/buttons/editor-rtl.css 291 B
build/block-library/blocks/buttons/editor.css 291 B
build/block-library/blocks/buttons/style-rtl.css 349 B
build/block-library/blocks/buttons/style.css 349 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 132 B
build/block-library/blocks/categories/editor.css 131 B
build/block-library/blocks/categories/style-rtl.css 152 B
build/block-library/blocks/categories/style.css 152 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 139 B
build/block-library/blocks/code/style.css 139 B
build/block-library/blocks/code/theme-rtl.css 122 B
build/block-library/blocks/code/theme.css 122 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 420 B
build/block-library/blocks/columns/style.css 420 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 124 B
build/block-library/blocks/comment-author-avatar/editor.css 124 B
build/block-library/blocks/comment-author-name/style-rtl.css 72 B
build/block-library/blocks/comment-author-name/style.css 72 B
build/block-library/blocks/comment-content/style-rtl.css 120 B
build/block-library/blocks/comment-content/style.css 120 B
build/block-library/blocks/comment-date/style-rtl.css 65 B
build/block-library/blocks/comment-date/style.css 65 B
build/block-library/blocks/comment-edit-link/style-rtl.css 70 B
build/block-library/blocks/comment-edit-link/style.css 70 B
build/block-library/blocks/comment-reply-link/style-rtl.css 71 B
build/block-library/blocks/comment-reply-link/style.css 71 B
build/block-library/blocks/comment-template/style-rtl.css 191 B
build/block-library/blocks/comment-template/style.css 191 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 168 B
build/block-library/blocks/comments-pagination/editor.css 168 B
build/block-library/blocks/comments-pagination/style-rtl.css 201 B
build/block-library/blocks/comments-pagination/style.css 201 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 842 B
build/block-library/blocks/comments/editor.css 842 B
build/block-library/blocks/comments/style-rtl.css 637 B
build/block-library/blocks/comments/style.css 637 B
build/block-library/blocks/cover/editor-rtl.css 631 B
build/block-library/blocks/cover/editor.css 631 B
build/block-library/blocks/cover/style-rtl.css 1.7 kB
build/block-library/blocks/cover/style.css 1.69 kB
build/block-library/blocks/details/editor-rtl.css 65 B
build/block-library/blocks/details/editor.css 65 B
build/block-library/blocks/details/style-rtl.css 86 B
build/block-library/blocks/details/style.css 86 B
build/block-library/blocks/embed/editor-rtl.css 331 B
build/block-library/blocks/embed/editor.css 331 B
build/block-library/blocks/embed/style-rtl.css 419 B
build/block-library/blocks/embed/style.css 419 B
build/block-library/blocks/embed/theme-rtl.css 133 B
build/block-library/blocks/embed/theme.css 133 B
build/block-library/blocks/file/editor-rtl.css 326 B
build/block-library/blocks/file/editor.css 326 B
build/block-library/blocks/file/style-rtl.css 278 B
build/block-library/blocks/file/style.css 278 B
build/block-library/blocks/footnotes/style-rtl.css 198 B
build/block-library/blocks/footnotes/style.css 197 B
build/block-library/blocks/form-input/editor-rtl.css 229 B
build/block-library/blocks/form-input/editor.css 229 B
build/block-library/blocks/form-input/style-rtl.css 349 B
build/block-library/blocks/form-input/style.css 349 B
build/block-library/blocks/form-submission-notification/editor-rtl.css 344 B
build/block-library/blocks/form-submission-notification/editor.css 341 B
build/block-library/blocks/form-submit-button/style-rtl.css 69 B
build/block-library/blocks/form-submit-button/style.css 69 B
build/block-library/blocks/freeform/editor-rtl.css 2.59 kB
build/block-library/blocks/freeform/editor.css 2.59 kB
build/block-library/blocks/gallery/editor-rtl.css 615 B
build/block-library/blocks/gallery/editor.css 616 B
build/block-library/blocks/gallery/style-rtl.css 1.83 kB
build/block-library/blocks/gallery/style.css 1.83 kB
build/block-library/blocks/gallery/theme-rtl.css 108 B
build/block-library/blocks/gallery/theme.css 108 B
build/block-library/blocks/group/editor-rtl.css 334 B
build/block-library/blocks/group/editor.css 334 B
build/block-library/blocks/group/style-rtl.css 103 B
build/block-library/blocks/group/style.css 103 B
build/block-library/blocks/group/theme-rtl.css 79 B
build/block-library/blocks/group/theme.css 79 B
build/block-library/blocks/heading/style-rtl.css 188 B
build/block-library/blocks/heading/style.css 188 B
build/block-library/blocks/html/editor-rtl.css 353 B
build/block-library/blocks/html/editor.css 354 B
build/block-library/blocks/image/editor-rtl.css 763 B
build/block-library/blocks/image/editor.css 763 B
build/block-library/blocks/image/style-rtl.css 1.6 kB
build/block-library/blocks/image/style.css 1.59 kB
build/block-library/blocks/image/theme-rtl.css 137 B
build/block-library/blocks/image/theme.css 137 B
build/block-library/blocks/latest-comments/style-rtl.css 355 B
build/block-library/blocks/latest-comments/style.css 354 B
build/block-library/blocks/latest-posts/editor-rtl.css 139 B
build/block-library/blocks/latest-posts/editor.css 138 B
build/block-library/blocks/latest-posts/style-rtl.css 520 B
build/block-library/blocks/latest-posts/style.css 520 B
build/block-library/blocks/list/style-rtl.css 107 B
build/block-library/blocks/list/style.css 107 B
build/block-library/blocks/loginout/style-rtl.css 61 B
build/block-library/blocks/loginout/style.css 61 B
build/block-library/blocks/media-text/editor-rtl.css 321 B
build/block-library/blocks/media-text/editor.css 320 B
build/block-library/blocks/media-text/style-rtl.css 543 B
build/block-library/blocks/media-text/style.css 542 B
build/block-library/blocks/more/editor-rtl.css 393 B
build/block-library/blocks/more/editor.css 393 B
build/block-library/blocks/navigation-link/editor-rtl.css 625 B
build/block-library/blocks/navigation-link/editor.css 628 B
build/block-library/blocks/navigation-link/style-rtl.css 190 B
build/block-library/blocks/navigation-link/style.css 188 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 295 B
build/block-library/blocks/navigation-submenu/editor.css 294 B
build/block-library/blocks/navigation/editor-rtl.css 2.23 kB
build/block-library/blocks/navigation/editor.css 2.24 kB
build/block-library/blocks/navigation/style-rtl.css 2.27 kB
build/block-library/blocks/navigation/style.css 2.26 kB
build/block-library/blocks/nextpage/editor-rtl.css 392 B
build/block-library/blocks/nextpage/editor.css 392 B
build/block-library/blocks/page-list/editor-rtl.css 356 B
build/block-library/blocks/page-list/editor.css 356 B
build/block-library/blocks/page-list/style-rtl.css 192 B
build/block-library/blocks/page-list/style.css 192 B
build/block-library/blocks/paragraph/editor-rtl.css 251 B
build/block-library/blocks/paragraph/editor.css 251 B
build/block-library/blocks/paragraph/style-rtl.css 341 B
build/block-library/blocks/paragraph/style.css 340 B
build/block-library/blocks/post-author-biography/style-rtl.css 74 B
build/block-library/blocks/post-author-biography/style.css 74 B
build/block-library/blocks/post-author-name/style-rtl.css 69 B
build/block-library/blocks/post-author-name/style.css 69 B
build/block-library/blocks/post-author/style-rtl.css 188 B
build/block-library/blocks/post-author/style.css 189 B
build/block-library/blocks/post-comments-count/style-rtl.css 72 B
build/block-library/blocks/post-comments-count/style.css 72 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 527 B
build/block-library/blocks/post-comments-form/style.css 528 B
build/block-library/blocks/post-comments-link/style-rtl.css 71 B
build/block-library/blocks/post-comments-link/style.css 71 B
build/block-library/blocks/post-content/style-rtl.css 61 B
build/block-library/blocks/post-content/style.css 61 B
build/block-library/blocks/post-date/style-rtl.css 62 B
build/block-library/blocks/post-date/style.css 62 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 155 B
build/block-library/blocks/post-excerpt/style.css 155 B
build/block-library/blocks/post-featured-image/editor-rtl.css 715 B
build/block-library/blocks/post-featured-image/editor.css 712 B
build/block-library/blocks/post-featured-image/style-rtl.css 347 B
build/block-library/blocks/post-featured-image/style.css 347 B
build/block-library/blocks/post-navigation-link/style-rtl.css 215 B
build/block-library/blocks/post-navigation-link/style.css 214 B
build/block-library/blocks/post-template/style-rtl.css 414 B
build/block-library/blocks/post-template/style.css 414 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 70 B
build/block-library/blocks/post-time-to-read/style.css 70 B
build/block-library/blocks/post-title/style-rtl.css 162 B
build/block-library/blocks/post-title/style.css 162 B
build/block-library/blocks/preformatted/style-rtl.css 125 B
build/block-library/blocks/preformatted/style.css 125 B
build/block-library/blocks/pullquote/editor-rtl.css 133 B
build/block-library/blocks/pullquote/editor.css 133 B
build/block-library/blocks/pullquote/style-rtl.css 365 B
build/block-library/blocks/pullquote/style.css 365 B
build/block-library/blocks/pullquote/theme-rtl.css 176 B
build/block-library/blocks/pullquote/theme.css 176 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 121 B
build/block-library/blocks/query-pagination-numbers/editor.css 118 B
build/block-library/blocks/query-pagination/editor-rtl.css 154 B
build/block-library/blocks/query-pagination/editor.css 154 B
build/block-library/blocks/query-pagination/style-rtl.css 237 B
build/block-library/blocks/query-pagination/style.css 237 B
build/block-library/blocks/query-title/style-rtl.css 64 B
build/block-library/blocks/query-title/style.css 64 B
build/block-library/blocks/query-total/style-rtl.css 64 B
build/block-library/blocks/query-total/style.css 64 B
build/block-library/blocks/query/editor-rtl.css 432 B
build/block-library/blocks/query/editor.css 432 B
build/block-library/blocks/quote/style-rtl.css 238 B
build/block-library/blocks/quote/style.css 238 B
build/block-library/blocks/quote/theme-rtl.css 233 B
build/block-library/blocks/quote/theme.css 236 B
build/block-library/blocks/read-more/style-rtl.css 131 B
build/block-library/blocks/read-more/style.css 131 B
build/block-library/blocks/rss/editor-rtl.css 126 B
build/block-library/blocks/rss/editor.css 126 B
build/block-library/blocks/rss/style-rtl.css 284 B
build/block-library/blocks/rss/style.css 283 B
build/block-library/blocks/search/editor-rtl.css 199 B
build/block-library/blocks/search/editor.css 199 B
build/block-library/blocks/search/style-rtl.css 674 B
build/block-library/blocks/search/style.css 671 B
build/block-library/blocks/search/theme-rtl.css 113 B
build/block-library/blocks/search/theme.css 113 B
build/block-library/blocks/separator/editor-rtl.css 100 B
build/block-library/blocks/separator/editor.css 100 B
build/block-library/blocks/separator/style-rtl.css 248 B
build/block-library/blocks/separator/style.css 248 B
build/block-library/blocks/separator/theme-rtl.css 195 B
build/block-library/blocks/separator/theme.css 195 B
build/block-library/blocks/shortcode/editor-rtl.css 286 B
build/block-library/blocks/shortcode/editor.css 286 B
build/block-library/blocks/site-logo/editor-rtl.css 773 B
build/block-library/blocks/site-logo/editor.css 770 B
build/block-library/blocks/site-logo/style-rtl.css 218 B
build/block-library/blocks/site-logo/style.css 218 B
build/block-library/blocks/site-tagline/editor-rtl.css 87 B
build/block-library/blocks/site-tagline/editor.css 87 B
build/block-library/blocks/site-tagline/style-rtl.css 65 B
build/block-library/blocks/site-tagline/style.css 65 B
build/block-library/blocks/site-title/editor-rtl.css 85 B
build/block-library/blocks/site-title/editor.css 85 B
build/block-library/blocks/site-title/style-rtl.css 143 B
build/block-library/blocks/site-title/style.css 143 B
build/block-library/blocks/social-link/editor-rtl.css 314 B
build/block-library/blocks/social-link/editor.css 314 B
build/block-library/blocks/social-links/editor-rtl.css 339 B
build/block-library/blocks/social-links/editor.css 338 B
build/block-library/blocks/social-links/style-rtl.css 1.51 kB
build/block-library/blocks/social-links/style.css 1.51 kB
build/block-library/blocks/spacer/editor-rtl.css 346 B
build/block-library/blocks/spacer/editor.css 346 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-of-contents/style-rtl.css 83 B
build/block-library/blocks/table-of-contents/style.css 83 B
build/block-library/blocks/table/editor-rtl.css 394 B
build/block-library/blocks/table/editor.css 394 B
build/block-library/blocks/table/style-rtl.css 640 B
build/block-library/blocks/table/style.css 639 B
build/block-library/blocks/table/theme-rtl.css 152 B
build/block-library/blocks/table/theme.css 152 B
build/block-library/blocks/tag-cloud/editor-rtl.css 92 B
build/block-library/blocks/tag-cloud/editor.css 92 B
build/block-library/blocks/tag-cloud/style-rtl.css 248 B
build/block-library/blocks/tag-cloud/style.css 248 B
build/block-library/blocks/template-part/editor-rtl.css 368 B
build/block-library/blocks/template-part/editor.css 368 B
build/block-library/blocks/template-part/theme-rtl.css 113 B
build/block-library/blocks/template-part/theme.css 113 B
build/block-library/blocks/term-description/style-rtl.css 126 B
build/block-library/blocks/term-description/style.css 126 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 165 B
build/block-library/blocks/text-columns/style.css 165 B
build/block-library/blocks/verse/style-rtl.css 98 B
build/block-library/blocks/verse/style.css 98 B
build/block-library/blocks/video/editor-rtl.css 413 B
build/block-library/blocks/video/editor.css 414 B
build/block-library/blocks/video/style-rtl.css 202 B
build/block-library/blocks/video/style.css 202 B
build/block-library/blocks/video/theme-rtl.css 134 B
build/block-library/blocks/video/theme.css 134 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.08 kB
build/block-library/common.css 1.08 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.5 kB
build/block-library/editor.css 11.5 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/reset-rtl.css 472 B
build/block-library/reset.css 472 B
build/block-library/style-rtl.css 15.4 kB
build/block-library/style.css 15.4 kB
build/block-library/theme-rtl.css 715 B
build/block-library/theme.css 719 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.87 kB
build/blocks/index.min.js 52.6 kB
build/commands/index.min.js 16.3 kB
build/commands/style-rtl.css 956 B
build/commands/style.css 953 B
build/components/index.min.js 252 kB
build/components/style-rtl.css 13.6 kB
build/components/style.css 13.6 kB
build/compose/index.min.js 12.8 kB
build/core-commands/index.min.js 3.69 kB
build/core-data/index.min.js 74.9 kB
build/customize-widgets/index.min.js 11 kB
build/customize-widgets/style-rtl.css 1.43 kB
build/customize-widgets/style.css 1.43 kB
build/data-controls/index.min.js 641 B
build/data/index.min.js 8.7 kB
build/date/index.min.js 18 kB
build/deprecated/index.min.js 458 B
build/dom-ready/index.min.js 325 B
build/dom/index.min.js 4.68 kB
build/edit-post/classic-rtl.css 577 B
build/edit-post/classic.css 578 B
build/edit-post/index.min.js 13.3 kB
build/edit-post/style-rtl.css 2.69 kB
build/edit-post/style.css 2.69 kB
build/edit-site/index.min.js 236 kB
build/edit-site/posts-rtl.css 8.96 kB
build/edit-site/posts.css 8.97 kB
build/edit-site/style-rtl.css 15.1 kB
build/edit-site/style.css 15.1 kB
build/edit-widgets/index.min.js 17.8 kB
build/edit-widgets/style-rtl.css 4.05 kB
build/edit-widgets/style.css 4.06 kB
build/editor/index.min.js 127 kB
build/editor/style-rtl.css 9.2 kB
build/editor/style.css 9.21 kB
build/element/index.min.js 4.84 kB
build/escape-html/index.min.js 537 B
build/format-library/index.min.js 8.23 kB
build/format-library/style-rtl.css 472 B
build/format-library/style.css 472 B
build/hooks/index.min.js 1.65 kB
build/html-entities/index.min.js 467 B
build/i18n/index.min.js 2.23 kB
build/is-shallow-equal/index.min.js 526 B
build/keyboard-shortcuts/index.min.js 1.32 kB
build/keycodes/index.min.js 1.46 kB
build/list-reusable-blocks/index.min.js 2.13 kB
build/list-reusable-blocks/style-rtl.css 847 B
build/list-reusable-blocks/style.css 848 B
build/media-utils/index.min.js 3.69 kB
build/notices/index.min.js 946 B
build/nux/index.min.js 1.62 kB
build/nux/style-rtl.css 767 B
build/nux/style.css 763 B
build/patterns/index.min.js 7.36 kB
build/patterns/style-rtl.css 687 B
build/patterns/style.css 685 B
build/plugins/index.min.js 1.87 kB
build/preferences-persistence/index.min.js 2.06 kB
build/preferences/index.min.js 2.9 kB
build/preferences/style-rtl.css 562 B
build/preferences/style.css 562 B
build/primitives/index.min.js 829 B
build/priority-queue/index.min.js 1.54 kB
build/private-apis/index.min.js 978 B
build/react-i18n/index.min.js 640 B
build/react-refresh-entry/index.min.js 9.47 kB
build/react-refresh-runtime/index.min.js 6.76 kB
build/redux-routine/index.min.js 2.7 kB
build/reusable-blocks/index.min.js 2.53 kB
build/reusable-blocks/style-rtl.css 255 B
build/reusable-blocks/style.css 255 B
build/rich-text/index.min.js 12.2 kB
build/router/index.min.js 5.47 kB
build/server-side-render/index.min.js 1.6 kB
build/shortcode/index.min.js 1.4 kB
build/style-engine/index.min.js 2.04 kB
build/token-list/index.min.js 581 B
build/url/index.min.js 3.97 kB
build/vendors/react-dom.min.js 41.7 kB
build/vendors/react-jsx-runtime.min.js 556 B
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 965 B
build/vips/index.min.js 36.2 kB
build/warning/index.min.js 250 B
build/widgets/index.min.js 7.16 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.04 kB

compressed-size-action

onSelectOrClose( {
clientId: blockToInsert?.clientId,
} );
onSelectOrClose( blockToInsert );
Copy link
Contributor Author

@getdave getdave Aug 11, 2025

Choose a reason for hiding this comment

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

This will be backwards compat as the new object will still contain clientId.

@@ -1,5 +1,6 @@
export const DEFAULT_BLOCK = {
name: 'core/navigation-link',
attributes: { type: 'page', kind: 'post-type' },
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is needed to ensure the directly inserted block is the correct variation (i.e. Page) for Nav blocks.

@getdave getdave changed the title WIP: refactor: eliminate prop drilling for directInsert in PrivateListView feat: align Navigation block appender behavior between canvas and list view contexts Aug 11, 2025
@getdave getdave changed the title feat: align Navigation block appender behavior between canvas and list view contexts Align Navigation block appender behavior between canvas and list view contexts Aug 11, 2025
@getdave

This comment was marked as resolved.

@scruffian

This comment was marked as resolved.

@getdave

This comment was marked as resolved.

Comment on lines 25 to 32
const directInsert = useSelect(
( select ) => {
const { getBlockListSettings } = select( blockEditorStore );
const settings = getBlockListSettings( clientId );
return settings?.directInsert || false;
},
[ clientId ]
);
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This will cause ALL list views that have an inserter to mirror the behaviour set in the block list settings. This makes sense to me and I believe is limited to the Nav block as it's the only one able to consume the PrivateListView.

Confidence check appreciated.

Copy link
Contributor

@talldan talldan Aug 18, 2025

Choose a reason for hiding this comment

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

Aligning how it works makes sense to me. Not sure if we could move towards them using the same component/hook or if they're too fundamentally different.

Only code quality / performance feedback is that this useSelect could be merged with the one a few lines below to reduce the number of store subscriptions.

@getdave getdave self-assigned this Aug 14, 2025
@getdave getdave added [Type] Enhancement A suggestion for improvement. [Block] Navigation Affects the Navigation Block labels Aug 14, 2025
@getdave getdave marked this pull request as ready for review August 14, 2025 10:55
@github-actions
Copy link

github-actions bot commented Aug 14, 2025

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

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

Co-authored-by: getdave <[email protected]>
Co-authored-by: scruffian <[email protected]>
Co-authored-by: talldan <[email protected]>
Co-authored-by: jeryj <[email protected]>
Co-authored-by: ciampo <[email protected]>
Co-authored-by: aduth <[email protected]>

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

@scruffian
Copy link
Contributor

Block Cleanup: Ensure both contexts handle empty/incomplete blocks consistently

This works when I click in the sidebar to cancel link creation, but not when I click in the canvas:

Screen.Recording.2025-08-14.at.13.42.33.mov

@getdave
Copy link
Contributor Author

getdave commented Aug 14, 2025

This appears to be an issue relating to the canvas iframe. The Link UI is outside the iframe and thus the focusoutside logic doesn't seem to detect clicks within the editor canvas.

If you click anywhere else in the editor UI other than the editor canvas the cleanup works fine. It's just selecting stuff inside the canvas.

At this point I don't have a solution but essentially the onClose of Popover isn't firing due to internals of Popover.

@getdave getdave force-pushed the feature/private-list-view-custom-appender branch from 92e661d to b4c4291 Compare August 14, 2025 16:02
@getdave getdave force-pushed the feature/private-list-view-custom-appender branch from b4c4291 to 2c8a604 Compare August 15, 2025 08:30
isAppender
selectBlockOnInsert={ false }
shouldDirectInsert={ false }
shouldDirectInsert={ directInsert }
Copy link
Contributor

Choose a reason for hiding this comment

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

I guess we don't have any instances where this is false anymore.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It should mirror the block list settings.

…in list view

When using the 'Add block' feature in the Navigation block's list view context,
the original auto-inserted navigation link block was not being cleaned up when
a different block was selected via the QuickInserter. This caused duplicate
blocks to remain in the list view.

The fix adds a wrapper function handleSetInsertedBlock that removes the
original inserted block before setting the new selected block, ensuring
only the newly selected block remains in the list view.

This aligns the list view behavior with the canvas context behavior.
…view

When selecting a different block from the QuickInserter in the Navigation block's
list view context, the original auto-inserted block was being removed with
automatic block selection enabled. This caused focus stealing that closed the
list view and switched to the canvas.

The fix adds preventBlockSelection = false to removeBlock() calls to prevent
automatic block selection, keeping the list view open and maintaining proper
focus behavior.
…arity

Rename the setInsertedBlock prop to onBlockInsert across the Navigation block
components to make the prop name more generic and descriptive of its purpose
as a callback function that's called when a block is inserted.

This improves code readability and makes the prop name more reusable across
different contexts while maintaining all existing functionality.
- Add useEditorCanvasCleanup hook to handle iframe interaction cleanup
- Fixes issue where auto-inserted Navigation Link blocks weren't cleaned up when clicking on canvas blocks in List View context
- Uses standardized iframe selector approach consistent with rest of codebase
- Hook automatically manages event listener lifecycle based on LinkUI visibility
- Add useEditorCanvasCleanup hook to handle iframe interaction cleanup
- Fixes issue where auto-inserted Navigation Link blocks weren't cleaned up when clicking on canvas blocks in List View context
- Uses standardized iframe selector approach consistent with rest of codebase
- Hook automatically manages event listener lifecycle based on LinkUI visibility
@getdave getdave force-pushed the feature/private-list-view-custom-appender branch from 718929b to b9cb6eb Compare September 3, 2025 14:39
@getdave getdave requested a review from scruffian September 3, 2025 14:40
@getdave
Copy link
Contributor Author

getdave commented Sep 3, 2025

I've tested this and it's looking pretty solid to me. Just waiting on a review.

Update: turns out I forgot to push my changes 🤦 Should be working now @scruffian

@getdave
Copy link
Contributor Author

getdave commented Sep 3, 2025

Thinking about follow ups here:

Copy link
Contributor

@scruffian scruffian left a comment

Choose a reason for hiding this comment

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

This is working well now. A much better UX too, let's bring it in...

@scruffian scruffian merged commit 8899bb5 into trunk Sep 3, 2025
78 of 79 checks passed
@scruffian scruffian deleted the feature/private-list-view-custom-appender branch September 3, 2025 16:39
@github-actions github-actions bot added this to the Gutenberg 21.7 milestone Sep 3, 2025
getdave added a commit that referenced this pull request Sep 4, 2025
- Create shared BackButton component to eliminate duplication
- Replace duplicated back button implementations in LinkUIBlockInserter and LinkUIPageCreator
- Standardize back button behavior and styling across components
- Remove unused chevron icon imports from page-creator.js
- Add proper JSDoc documentation for BackButton component

This is the first phase of LinkUI duplication cleanup as discussed in PR #71163 follow-ups.
getdave added a commit that referenced this pull request Sep 4, 2025
- Create useDialogIds hook to eliminate duplicated useInstanceId calls
- Replace duplicated accessibility ID generation in LinkUIBlockInserter and UnforwardedLinkUI
- Maintain correct component parameters (LinkControl vs LinkUI) for proper ID generation
- Standardize dialog accessibility ID pattern across components
- Export hook for potential reuse in other components

This is the second phase of LinkUI duplication cleanup as discussed in PR #71163 follow-ups.
getdave added a commit that referenced this pull request Sep 4, 2025
- Create shared DialogWrapper component that handles all dialog concerns internally
- Eliminate useDialogIds hook by inlining useInstanceId calls directly in DialogWrapper
- Derive component, componentName, and backButtonClassName from className prop
- Move useFocusOnMount logic inside DialogWrapper for complete encapsulation
- Replace duplicated dialog structures in LinkUIBlockInserter and LinkUIPageCreator
- Fix useDialogIds reference error in main LinkUI component
- Maintain all existing CSS styling and accessibility features
- Fix nested ternary linting error with if/else statements

This completes the major refactoring of LinkUI duplication cleanup as discussed in PR #71163 follow-ups.
getdave added a commit that referenced this pull request Sep 5, 2025
* refactor: extract shared BackButton component from LinkUI

- Create shared BackButton component to eliminate duplication
- Replace duplicated back button implementations in LinkUIBlockInserter and LinkUIPageCreator
- Standardize back button behavior and styling across components
- Remove unused chevron icon imports from page-creator.js
- Add proper JSDoc documentation for BackButton component


Co-authored-by: getdave <[email protected]>
Co-authored-by: scruffian <[email protected]>

This is the first phase of LinkUI duplication cleanup as discussed in PR #71163 follow-ups.

* refactor: extract useDialogIds hook for dialog accessibility IDs

- Create useDialogIds hook to eliminate duplicated useInstanceId calls
- Replace duplicated accessibility ID generation in LinkUIBlockInserter and UnforwardedLinkUI
- Maintain correct component parameters (LinkControl vs LinkUI) for proper ID generation
- Standardize dialog accessibility ID pattern across components
- Export hook for potential reuse in other components

This is the second phase of LinkUI duplication cleanup as discussed in PR #71163 follow-ups.

* refactor: create DialogWrapper component with minimal API

- Create shared DialogWrapper component that handles all dialog concerns internally
- Eliminate useDialogIds hook by inlining useInstanceId calls directly in DialogWrapper
- Derive component, componentName, and backButtonClassName from className prop
- Move useFocusOnMount logic inside DialogWrapper for complete encapsulation
- Replace duplicated dialog structures in LinkUIBlockInserter and LinkUIPageCreator
- Fix useDialogIds reference error in main LinkUI component
- Maintain all existing CSS styling and accessibility features
- Fix nested ternary linting error with if/else statements

This completes the major refactoring of LinkUI duplication cleanup as discussed in PR #71163 follow-ups.

* refactor: extract LinkUIBlockInserter to separate file and consolidate BackButton

- Extract LinkUIBlockInserter component to block-inserter.js for consistency with page-creator.js
- Consolidate BackButton component into dialog-wrapper.js since it's only used there
- Fix import issues with privateApis in block-inserter.js
- Remove separate back-button.js file to reduce file count
- Clean up unused imports in link-ui.js after component extraction
- Fix JSDoc alignment in block-inserter.js
- Maintain all existing functionality while improving file organization

This completes the component extraction phase of the LinkUI duplication cleanup.

* refactor: simplify DialogWrapper instance ID generation

Use DialogWrapper as the component for useInstanceId instead of deriving
it from className. This removes unnecessary complexity and unused imports.

* Standardise ID generation in Dialog
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

[Block] Navigation Affects the Navigation Block [Status] Blocked Used to indicate that a current effort isn't able to move forward [Type] Enhancement A suggestion for improvement.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants