Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add 'Widget Group' block to widgets screens #34484

Merged
merged 18 commits into from
Sep 7, 2021
Merged

Conversation

noisysocks
Copy link
Member

@noisysocks noisysocks commented Sep 2, 2021

Description

Closes #32723.

Adds a new block called Widget Group to the widget block editors. This lets users add a title to a group of blocks in a way that's compatible with older themes. You can read through the above linked issue for more context on the problem that this attempts to address.

In this PR I've taken #33881 and implemented the flow described by @critterverse in #33881 (comment).

Why patterns don't work here

A new block was created instead of utilising patterns. This was explored in #33881 but ultimately it was decided it didn't solve the core user problems.

The key problems were:

The decision about this can be found here.

How has this been tested?

  1. Go to Appearance → Widgets or Appearance → Customize.
  2. Add a Widget Group block.

Screenshots

Kapture.2021-09-02.at.14.53.22.mp4

Checklist:

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

@noisysocks noisysocks added [Type] Enhancement A suggestion for improvement. Needs Design Feedback Needs general design feedback. [Feature] Widgets Screen The block-based screen that replaced widgets.php. [Feature] Widgets Customizer Ability to add and edit blocks in Customize → Widgets. labels Sep 2, 2021
@github-actions
Copy link

github-actions bot commented Sep 2, 2021

Size Change: -722 B (0%)

Total Size: 1.04 MB

Filename Size Change
build/block-editor/index.min.js 119 kB +110 B (0%)
build/block-editor/style-rtl.css 13.8 kB +5 B (0%)
build/block-editor/style.css 13.8 kB +5 B (0%)
build/block-library/blocks/gallery/style-rtl.css 1.6 kB -15 B (-1%)
build/block-library/blocks/gallery/style.css 1.59 kB -13 B (-1%)
build/block-library/blocks/navigation/style-rtl.css 1.42 kB +3 B (0%)
build/block-library/blocks/navigation/style.css 1.41 kB +4 B (0%)
build/block-library/common-rtl.css 853 B -437 B (-34%) 🎉
build/block-library/common.css 849 B -439 B (-34%) 🎉
build/block-library/editor-rtl.css 9.52 kB -457 B (-5%)
build/block-library/editor.css 9.51 kB -456 B (-5%)
build/block-library/index.min.js 150 kB -28 B (0%)
build/block-library/style-rtl.css 10.1 kB -462 B (-4%)
build/block-library/style.css 10.1 kB -461 B (-4%)
build/blocks/index.min.js 46.9 kB -15 B (0%)
build/components/index.min.js 209 kB +10 B (0%)
build/components/style-rtl.css 15.8 kB +39 B (0%)
build/components/style.css 15.8 kB +38 B (0%)
build/core-data/index.min.js 12.4 kB +28 B (0%)
build/customize-widgets/index.min.js 11.1 kB +22 B (0%)
build/edit-navigation/index.min.js 14 kB +365 B (+3%)
build/edit-navigation/style-rtl.css 3.26 kB +117 B (+4%)
build/edit-navigation/style.css 3.26 kB +117 B (+4%)
build/edit-post/index.min.js 29 kB +27 B (0%)
build/edit-post/style-rtl.css 7.2 kB +6 B (0%)
build/edit-post/style.css 7.2 kB +6 B (0%)
build/edit-site/index.min.js 26.3 kB -4 B (0%)
build/edit-widgets/index.min.js 16.1 kB +8 B (0%)
build/editor/index.min.js 37.7 kB +22 B (0%)
build/rich-text/index.min.js 10.6 kB -8 B (0%)
build/widgets/index.min.js 7.26 kB +890 B (+14%) ⚠️
build/widgets/style-rtl.css 1.17 kB +126 B (+12%) ⚠️
build/widgets/style.css 1.18 kB +125 B (+12%) ⚠️
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 931 B
build/admin-manifest/index.min.js 1.09 kB
build/annotations/index.min.js 2.7 kB
build/api-fetch/index.min.js 2.19 kB
build/autop/index.min.js 2.08 kB
build/blob/index.min.js 459 B
build/block-directory/index.min.js 6.2 kB
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/default-editor-styles-rtl.css 378 B
build/block-editor/default-editor-styles.css 378 B
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 65 B
build/block-library/blocks/archives/style.css 65 B
build/block-library/blocks/audio/editor-rtl.css 58 B
build/block-library/blocks/audio/editor.css 58 B
build/block-library/blocks/audio/style-rtl.css 111 B
build/block-library/blocks/audio/style.css 111 B
build/block-library/blocks/audio/theme-rtl.css 125 B
build/block-library/blocks/audio/theme.css 125 B
build/block-library/blocks/block/editor-rtl.css 161 B
build/block-library/blocks/block/editor.css 161 B
build/block-library/blocks/button/editor-rtl.css 474 B
build/block-library/blocks/button/editor.css 474 B
build/block-library/blocks/button/style-rtl.css 600 B
build/block-library/blocks/button/style.css 600 B
build/block-library/blocks/buttons/editor-rtl.css 315 B
build/block-library/blocks/buttons/editor.css 315 B
build/block-library/blocks/buttons/style-rtl.css 370 B
build/block-library/blocks/buttons/style.css 370 B
build/block-library/blocks/calendar/style-rtl.css 207 B
build/block-library/blocks/calendar/style.css 207 B
build/block-library/blocks/categories/editor-rtl.css 84 B
build/block-library/blocks/categories/editor.css 83 B
build/block-library/blocks/categories/style-rtl.css 79 B
build/block-library/blocks/categories/style.css 79 B
build/block-library/blocks/code/style-rtl.css 90 B
build/block-library/blocks/code/style.css 90 B
build/block-library/blocks/code/theme-rtl.css 131 B
build/block-library/blocks/code/theme.css 131 B
build/block-library/blocks/columns/editor-rtl.css 194 B
build/block-library/blocks/columns/editor.css 193 B
build/block-library/blocks/columns/style-rtl.css 474 B
build/block-library/blocks/columns/style.css 475 B
build/block-library/blocks/cover/editor-rtl.css 666 B
build/block-library/blocks/cover/editor.css 670 B
build/block-library/blocks/cover/style-rtl.css 1.23 kB
build/block-library/blocks/cover/style.css 1.23 kB
build/block-library/blocks/embed/editor-rtl.css 488 B
build/block-library/blocks/embed/editor.css 488 B
build/block-library/blocks/embed/style-rtl.css 417 B
build/block-library/blocks/embed/style.css 417 B
build/block-library/blocks/embed/theme-rtl.css 124 B
build/block-library/blocks/embed/theme.css 124 B
build/block-library/blocks/file/editor-rtl.css 300 B
build/block-library/blocks/file/editor.css 300 B
build/block-library/blocks/file/style-rtl.css 255 B
build/block-library/blocks/file/style.css 255 B
build/block-library/blocks/file/view.min.js 322 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB
build/block-library/blocks/freeform/editor.css 2.44 kB
build/block-library/blocks/gallery/editor-rtl.css 925 B
build/block-library/blocks/gallery/editor.css 929 B
build/block-library/blocks/gallery/theme-rtl.css 122 B
build/block-library/blocks/gallery/theme.css 122 B
build/block-library/blocks/group/editor-rtl.css 159 B
build/block-library/blocks/group/editor.css 159 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 70 B
build/block-library/blocks/group/theme.css 70 B
build/block-library/blocks/heading/style-rtl.css 114 B
build/block-library/blocks/heading/style.css 114 B
build/block-library/blocks/home-link/style-rtl.css 247 B
build/block-library/blocks/home-link/style.css 247 B
build/block-library/blocks/html/editor-rtl.css 283 B
build/block-library/blocks/html/editor.css 284 B
build/block-library/blocks/image/editor-rtl.css 728 B
build/block-library/blocks/image/editor.css 728 B
build/block-library/blocks/image/style-rtl.css 482 B
build/block-library/blocks/image/style.css 487 B
build/block-library/blocks/image/theme-rtl.css 124 B
build/block-library/blocks/image/theme.css 124 B
build/block-library/blocks/latest-comments/style-rtl.css 284 B
build/block-library/blocks/latest-comments/style.css 284 B
build/block-library/blocks/latest-posts/editor-rtl.css 137 B
build/block-library/blocks/latest-posts/editor.css 137 B
build/block-library/blocks/latest-posts/style-rtl.css 528 B
build/block-library/blocks/latest-posts/style.css 527 B
build/block-library/blocks/list/style-rtl.css 94 B
build/block-library/blocks/list/style.css 94 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 488 B
build/block-library/blocks/media-text/style.css 485 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 489 B
build/block-library/blocks/navigation-link/editor.css 488 B
build/block-library/blocks/navigation-link/style-rtl.css 94 B
build/block-library/blocks/navigation-link/style.css 94 B
build/block-library/blocks/navigation/editor-rtl.css 1.72 kB
build/block-library/blocks/navigation/editor.css 1.72 kB
build/block-library/blocks/navigation/view.min.js 2.52 kB
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 310 B
build/block-library/blocks/page-list/editor.css 310 B
build/block-library/blocks/page-list/style-rtl.css 241 B
build/block-library/blocks/page-list/style.css 241 B
build/block-library/blocks/paragraph/editor-rtl.css 157 B
build/block-library/blocks/paragraph/editor.css 157 B
build/block-library/blocks/paragraph/style-rtl.css 261 B
build/block-library/blocks/paragraph/style.css 261 B
build/block-library/blocks/post-author/editor-rtl.css 210 B
build/block-library/blocks/post-author/editor.css 210 B
build/block-library/blocks/post-author/style-rtl.css 182 B
build/block-library/blocks/post-author/style.css 181 B
build/block-library/blocks/post-comments-form/style-rtl.css 140 B
build/block-library/blocks/post-comments-form/style.css 140 B
build/block-library/blocks/post-comments/style-rtl.css 360 B
build/block-library/blocks/post-comments/style.css 359 B
build/block-library/blocks/post-content/editor-rtl.css 138 B
build/block-library/blocks/post-content/editor.css 138 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B
build/block-library/blocks/post-excerpt/editor.css 73 B
build/block-library/blocks/post-excerpt/style-rtl.css 69 B
build/block-library/blocks/post-excerpt/style.css 69 B
build/block-library/blocks/post-featured-image/editor-rtl.css 398 B
build/block-library/blocks/post-featured-image/editor.css 398 B
build/block-library/blocks/post-featured-image/style-rtl.css 143 B
build/block-library/blocks/post-featured-image/style.css 143 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 378 B
build/block-library/blocks/post-template/style.css 379 B
build/block-library/blocks/post-terms/style-rtl.css 73 B
build/block-library/blocks/post-terms/style.css 73 B
build/block-library/blocks/post-title/style-rtl.css 60 B
build/block-library/blocks/post-title/style.css 60 B
build/block-library/blocks/preformatted/style-rtl.css 103 B
build/block-library/blocks/preformatted/style.css 103 B
build/block-library/blocks/pullquote/editor-rtl.css 198 B
build/block-library/blocks/pullquote/editor.css 198 B
build/block-library/blocks/pullquote/style-rtl.css 378 B
build/block-library/blocks/pullquote/style.css 378 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 270 B
build/block-library/blocks/query-pagination/editor.css 262 B
build/block-library/blocks/query-pagination/style-rtl.css 168 B
build/block-library/blocks/query-pagination/style.css 168 B
build/block-library/blocks/query-title/editor-rtl.css 85 B
build/block-library/blocks/query-title/editor.css 85 B
build/block-library/blocks/query/editor-rtl.css 131 B
build/block-library/blocks/query/editor.css 132 B
build/block-library/blocks/quote/style-rtl.css 187 B
build/block-library/blocks/quote/style.css 187 B
build/block-library/blocks/quote/theme-rtl.css 220 B
build/block-library/blocks/quote/theme.css 222 B
build/block-library/blocks/rss/editor-rtl.css 202 B
build/block-library/blocks/rss/editor.css 204 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 165 B
build/block-library/blocks/search/editor.css 165 B
build/block-library/blocks/search/style-rtl.css 374 B
build/block-library/blocks/search/style.css 375 B
build/block-library/blocks/search/theme-rtl.css 64 B
build/block-library/blocks/search/theme.css 64 B
build/block-library/blocks/separator/editor-rtl.css 99 B
build/block-library/blocks/separator/editor.css 99 B
build/block-library/blocks/separator/style-rtl.css 250 B
build/block-library/blocks/separator/style.css 250 B
build/block-library/blocks/separator/theme-rtl.css 172 B
build/block-library/blocks/separator/theme.css 172 B
build/block-library/blocks/shortcode/editor-rtl.css 474 B
build/block-library/blocks/shortcode/editor.css 474 B
build/block-library/blocks/site-logo/editor-rtl.css 462 B
build/block-library/blocks/site-logo/editor.css 464 B
build/block-library/blocks/site-logo/style-rtl.css 153 B
build/block-library/blocks/site-logo/style.css 153 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 84 B
build/block-library/blocks/site-title/editor.css 84 B
build/block-library/blocks/social-link/editor-rtl.css 165 B
build/block-library/blocks/social-link/editor.css 165 B
build/block-library/blocks/social-links/editor-rtl.css 812 B
build/block-library/blocks/social-links/editor.css 811 B
build/block-library/blocks/social-links/style-rtl.css 1.33 kB
build/block-library/blocks/social-links/style.css 1.33 kB
build/block-library/blocks/spacer/editor-rtl.css 307 B
build/block-library/blocks/spacer/editor.css 307 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 471 B
build/block-library/blocks/table/editor.css 472 B
build/block-library/blocks/table/style-rtl.css 481 B
build/block-library/blocks/table/style.css 481 B
build/block-library/blocks/table/theme-rtl.css 188 B
build/block-library/blocks/table/theme.css 188 B
build/block-library/blocks/tag-cloud/style-rtl.css 146 B
build/block-library/blocks/tag-cloud/style.css 146 B
build/block-library/blocks/template-part/editor-rtl.css 636 B
build/block-library/blocks/template-part/editor.css 635 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/term-description/editor-rtl.css 90 B
build/block-library/blocks/term-description/editor.css 90 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 87 B
build/block-library/blocks/verse/style.css 87 B
build/block-library/blocks/video/editor-rtl.css 571 B
build/block-library/blocks/video/editor.css 572 B
build/block-library/blocks/video/style-rtl.css 173 B
build/block-library/blocks/video/style.css 173 B
build/block-library/blocks/video/theme-rtl.css 124 B
build/block-library/blocks/video/theme.css 124 B
build/block-library/reset-rtl.css 527 B
build/block-library/reset.css 527 B
build/block-library/theme-rtl.css 658 B
build/block-library/theme.css 663 B
build/block-serialization-default-parser/index.min.js 1.09 kB
build/block-serialization-spec-parser/index.min.js 2.79 kB
build/compose/index.min.js 10.2 kB
build/customize-widgets/style-rtl.css 1.5 kB
build/customize-widgets/style.css 1.49 kB
build/data-controls/index.min.js 614 B
build/data/index.min.js 7.1 kB
build/date/index.min.js 31.5 kB
build/deprecated/index.min.js 428 B
build/dom-ready/index.min.js 304 B
build/dom/index.min.js 4.53 kB
build/edit-post/classic-rtl.css 492 B
build/edit-post/classic.css 494 B
build/edit-site/style-rtl.css 5.07 kB
build/edit-site/style.css 5.07 kB
build/edit-widgets/style-rtl.css 4.06 kB
build/edit-widgets/style.css 4.06 kB
build/editor/style-rtl.css 3.74 kB
build/editor/style.css 3.73 kB
build/element/index.min.js 3.17 kB
build/escape-html/index.min.js 517 B
build/format-library/index.min.js 5.36 kB
build/format-library/style-rtl.css 668 B
build/format-library/style.css 669 B
build/hooks/index.min.js 1.55 kB
build/html-entities/index.min.js 424 B
build/i18n/index.min.js 3.6 kB
build/is-shallow-equal/index.min.js 501 B
build/keyboard-shortcuts/index.min.js 1.49 kB
build/keycodes/index.min.js 1.25 kB
build/list-reusable-blocks/index.min.js 1.85 kB
build/list-reusable-blocks/style-rtl.css 838 B
build/list-reusable-blocks/style.css 838 B
build/media-utils/index.min.js 2.88 kB
build/notices/index.min.js 845 B
build/nux/index.min.js 2.03 kB
build/nux/style-rtl.css 747 B
build/nux/style.css 743 B
build/plugins/index.min.js 1.83 kB
build/primitives/index.min.js 921 B
build/priority-queue/index.min.js 582 B
build/react-i18n/index.min.js 671 B
build/redux-routine/index.min.js 2.63 kB
build/reusable-blocks/index.min.js 2.28 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/server-side-render/index.min.js 1.32 kB
build/shortcode/index.min.js 1.48 kB
build/token-list/index.min.js 562 B
build/url/index.min.js 1.74 kB
build/viewport/index.min.js 1.02 kB
build/warning/index.min.js 248 B
build/wordcount/index.min.js 1.04 kB

compressed-size-action

@critterverse
Copy link
Contributor

Nice! This seems to work well. A couple of notes:

  • I'm thinking a solid line instead of the dotted line (similar to the border treatment used for Reusable blocks)
  • Let's remove the Widget Group option from the container block Transform menu
  • The heading above the title field could say “Widget Group.” This matches the block name in List view, is helpful if you add a bunch of blocks inside the group, and avoids some repetitiveness with the title input

Side note: I wonder if we should update the Legacy Widget editing UI to incorporate the heading/title format used here? In that case some inputs would be blank (e.g. Image) and some would have the placeholder hint (e.g. Archives), I believe..

@noisysocks
Copy link
Member Author

noisysocks commented Sep 3, 2021

  • I'm thinking a solid line instead of the dotted line (similar to the border treatment used for Reusable blocks)

Good idea. Done in 1594a24e44f41483a30dfffeb28847ce1bfb16c9.

  • Let's remove the Widget Group option from the container block Transform menu

Done in e92cdb2310736b4a4f23aff840a7623fb48cb688.

⚠️ Noting that this required an API change to isMatch. It now receives the block object as the second argument. I think it's a pretty benign API enhancement and I've documented it.

  • The heading above the title field could say “Widget Group.” This matches the block name in List view, is helpful if you add a bunch of blocks inside the group, and avoids some repetitiveness with the title input

Yep, makes sense. Done in 12475d4c2a6071f90b7ab3492a7610576bdd4400.

Side note: I wonder if we should update the Legacy Widget editing UI to incorporate the heading/title format used here? In that case some inputs would be blank (e.g. Image) and some would have the placeholder hint (e.g. Archives), I believe..

This would have to be changed in Core since that's where the forms for editing these widgets comes from.

@noisysocks noisysocks added Backport to WP Minor Release Pull request that needs to be backported to a WordPress minor release and removed Needs Design Feedback Needs general design feedback. labels Sep 3, 2021
@noisysocks
Copy link
Member Author

OK this should be ready for re-review now! 🌻

It's too late for this to be included in 5.8.1, I think, as ideally it needs time in the plugin to receive testing. I've put the Backport to WP Minor Release label on it nonetheless so that we include it in 5.8.2 if that happens. (cc. @desrosj)

@critterverse
Copy link
Contributor

critterverse commented Sep 3, 2021

Awesome, looking good.

This would have to be changed in Core since that's where the forms for editing these widgets comes from.

This probably needs more thought anyway — maybe something to revisit later 😅

Side note that it's difficult to test this with a keyboard in the Customizer — it seems like #32175 may have regressed at some point since it was merged?

@noisysocks
Copy link
Member Author

Side note that it's difficult to test this with a keyboard in the Customizer — it seems like #32175 may have regressed at some point since it was merged?

Hm, I'm not seeing this. Could you tell me more? I'm able to insert and edit a Widget Group using the keyboard and when I press Esc it puts me in block selection mode as expected.

Kapture.2021-09-06.at.15.36.46.mp4

@critterverse
Copy link
Contributor

Hm, I'm not seeing this.

Ok looks like an issue on my end, thanks for double checking!

@draganescu
Copy link
Contributor

draganescu commented Sep 6, 2021

I tested this and it works great. I have two issues with how it "feels":

  1. The name "Widget group" is really nothing informative. How can a user discover this? We're building this to allow people to add titles to blocks in widget areas. How about "Widget with title" 😁 or "Block with title". I think "Block with title" would work best, since "widgets" already support titles via the Legacy Widget block.
  2. The interaction is unexpected, clicking the title makes the block disappear. Can we keep the block in place?

Copy link
Contributor

@tellthemachines tellthemachines 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, aside from a couple of odds and ends I commented on below.

There's also a slight issue in the Customizer: adding any block inside a Widget Group causes Uncaught TypeError: Cannot read properties of null (reading 'data') to show in the console. Seems to be coming from here.

It feels a bit weird to have an un-editable title above the blocks; I keep clicking it and being surprised when all the blocks disappear. But I don't have any better suggestions either 😅

docs/reference-guides/block-api/block-transforms.md Outdated Show resolved Hide resolved
packages/widgets/src/blocks/widget-group/constants.js Outdated Show resolved Hide resolved
packages/widgets/src/blocks/widget-group/edit.js Outdated Show resolved Hide resolved
@noisysocks
Copy link
Member Author

  1. The name "Widget group" is really nothing informative. How can a user discover this? We're building this to allow people to add titles to blocks in widget areas. How about "Widget with title" 😁 or "Block with title". I think "Block with title" would work best, since "widgets" already support titles via the Legacy Widget block.

Hm I'm not sure. "Block with title" reads to me like a pattern name. Also, Widget Group supports multiple blocks so it isn't really accurate to say "Block". What do you think, @critterverse?

  1. The interaction is unexpected, clicking the title makes the block disappear. Can we keep the block in place?

It feels a bit weird to have an un-editable title above the blocks; I keep clicking it and being surprised when all the blocks disappear. But I don't have any better suggestions either 😅

I'll defer to @critterverse here too 🙂

Here's what it looks like if we show the inner blocks while editing the title.

Kapture.2021-09-07.at.11.03.14.mp4

Alternatively we could make the title directly editable. This might cause confusion as the title is not truly WYSIWYG, but perhaps the placeholder properly indicates that this block is "different".

Kapture.2021-09-07.at.11.12.16.mp4

@noisysocks noisysocks added the Needs Design Feedback Needs general design feedback. label Sep 7, 2021
@noisysocks
Copy link
Member Author

noisysocks commented Sep 7, 2021

There's also a slight issue in the Customizer: adding any block inside a Widget Group causes Uncaught TypeError: Cannot read properties of null (reading 'data') to show in the console. Seems to be coming from here.

@tellthemachines: Hm I'm not seeing this. What WP version are you running? Does it happen with Gutenberg trunk or only this PR?

@tellthemachines
Copy link
Contributor

Hm I'm not seeing this. What WP version are you running? Does it happen with Gutenberg trunk or only this PR?

Oh, it appears I'm on 5.8-beta2-51213 😕 though I ran npx wp-env start --update a few days ago. It doesn't happen in trunk because there's no Widget group there. On this PR, it happens as soon as I click the inserter inside a newly-added Widget group.

@tellthemachines
Copy link
Contributor

Ok I retested with 5.7, 5.8 and 5.9-alpha-51732 and can't reproduce the issue so it should be fine 😄

Copy link
Contributor

@tellthemachines tellthemachines left a comment

Choose a reason for hiding this comment

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

Tested again and everything seems fine now ✅

I think we could do worse than merge this. The UX will probably never be ideal due to the in-between nature of the block, but the sooner we get it in the sooner we can iterate on actual user feedback 😄

@noisysocks noisysocks removed the Needs Design Feedback Needs general design feedback. label Sep 7, 2021
@noisysocks
Copy link
Member Author

I think we could do worse than merge this. The UX will probably never be ideal due to the in-between nature of the block, but the sooner we get it in the sooner we can iterate on actual user feedback 😄

Sounds like a plan!

@critterverse: Let me know what you think about #34484 (comment) and I can make make any changes we want in a follow-up PR.

@noisysocks noisysocks merged commit f2de298 into trunk Sep 7, 2021
@noisysocks noisysocks deleted the add/widget-group branch September 7, 2021 04:28
@github-actions github-actions bot added this to the Gutenberg 11.5 milestone Sep 7, 2021
@critterverse
Copy link
Contributor

critterverse commented Sep 8, 2021

Thanks for the feedback, all. The Legacy Widget-like toggling between editing and preview mode seems to be what people are finding jarring in this context, so I'm thinking we should go with this approach after all:

we could make the title directly editable. This might cause confusion as the title is not truly WYSIWYG, but perhaps the placeholder properly indicates that this block is “different”.

^See the second video in #34484 (comment)

There are still some awkward things with this approach as discussed here and in #33881 but as @noisysocks mentioned, at least the placeholder helps.

@Mamaduka Mamaduka removed the Backport to WP Minor Release Pull request that needs to be backported to a WordPress minor release label Jan 12, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Widgets Customizer Ability to add and edit blocks in Customize → Widgets. [Feature] Widgets Screen The block-based screen that replaced widgets.php. [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Widgets: Add a 'Widget Box' container block
7 participants