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

Unify placeholders #59275

Merged
merged 18 commits into from Apr 26, 2024
Merged

Unify placeholders #59275

merged 18 commits into from Apr 26, 2024

Conversation

jasmussen
Copy link
Contributor

@jasmussen jasmussen commented Feb 22, 2024

What?

Update and unify placeholder styles. This makes the Columns block have visually the same setup as Group does. Also updates Image, Video, Audio and other placeholders, emphasizing compactness so that they scale better to narrow contexts.

placeholders latest appearance

Previous iteration of this description

WIP exploration to explore unifying the Placeholder component.

Before:

placeholders-before

After:

placeholders-after

Testing Instructions for Keyboard

Test blocks that have setup states; group, columns, query loop, image, etc.

@jasmussen jasmussen added the [Type] Code Quality Issues or PRs that relate to code quality label Feb 22, 2024
@fabiankaegy
Copy link
Member

Whilst I appreciate the minimalistic visual of this I am converned about the usibility of this. Loosing the clear heading / label for which block the placeholder state is for is a big regression for me as you get lost much more easily.

I'm in favor of retaining the title in the placeholder.

I also just want to call out that changing the styling of the variation icons will cause any 3rd party variations to look out of place till they are updated. That is not a big deal but may cause an odd interim step for many.

@jasmussen
Copy link
Contributor Author

jasmussen commented Feb 23, 2024

Yep, definitely agree. This PR is a bit in provocation territory, exploring the "what if". I think there are actually pieces to this that are worth bringing forward, mainly that the code is such a tangled and fragmented mess at the moment. But also that the provocation here can hopefully serve as a catalyst to find the right configuration. E.g. integrating the title in a smaller footprint, and darkening the variation icon color, would be a trivial change, and could potentially still accomplish the same.

@jasmussen
Copy link
Contributor Author

Quick sketch, which could use better verbiage but still feels more scalable:

Frame 3

@jasmussen
Copy link
Contributor Author

I've updated this one to clean things up, include the label, and make it ready for review. I think this is a good step forward, let me know!

placeholders latest appearance

@jasmussen jasmussen marked this pull request as ready for review March 22, 2024 15:14
Copy link

github-actions bot commented Mar 22, 2024

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: jasmussen <joen@git.wordpress.org>
Co-authored-by: richtabor <richtabor@git.wordpress.org>
Co-authored-by: t-hamano <wildworks@git.wordpress.org>
Co-authored-by: jameskoster <jameskoster@git.wordpress.org>
Co-authored-by: fabiankaegy <fabiankaegy@git.wordpress.org>

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

@jasmussen jasmussen requested a review from a team March 22, 2024 15:14
Copy link

github-actions bot commented Mar 22, 2024

Size Change: -1.89 kB (0%)

Total Size: 1.74 MB

Filename Size Change
build/block-editor/content-rtl.css 4.44 kB -95 B (-2%)
build/block-editor/content.css 4.44 kB -93 B (-2%)
build/block-editor/index.min.js 256 kB +362 B (0%)
build/block-editor/style-rtl.css 15.5 kB -43 B (0%)
build/block-editor/style.css 15.5 kB -40 B (0%)
build/block-library/blocks/embed/editor-rtl.css 312 B -10 B (-3%)
build/block-library/blocks/embed/editor.css 312 B -10 B (-3%)
build/block-library/blocks/group/editor-rtl.css 394 B -253 B (-39%) 🎉
build/block-library/blocks/group/editor.css 394 B -253 B (-39%) 🎉
build/block-library/blocks/post-featured-image/editor-rtl.css 734 B +5 B (+1%)
build/block-library/blocks/post-featured-image/editor.css 732 B +5 B (+1%)
build/block-library/blocks/site-logo/editor-rtl.css 805 B +4 B (0%)
build/block-library/blocks/site-logo/editor.css 805 B +4 B (0%)
build/block-library/editor-rtl.css 12.2 kB -163 B (-1%)
build/block-library/editor.css 12.2 kB -168 B (-1%)
build/block-library/index.min.js 218 kB -470 B (0%)
build/components/index.min.js 220 kB -116 B (0%)
build/components/style-rtl.css 11.9 kB -29 B (0%)
build/components/style.css 11.9 kB -27 B (0%)
build/compose/index.min.js 12.8 kB +159 B (+1%)
build/edit-post/index.min.js 16.7 kB -301 B (-2%)
build/edit-post/style-rtl.css 4.06 kB -178 B (-4%)
build/edit-post/style.css 4.05 kB -180 B (-4%)
build/edit-site/index.min.js 224 kB -230 B (0%)
build/edit-site/style-rtl.css 13.7 kB -247 B (-2%)
build/edit-site/style.css 13.7 kB -248 B (-2%)
build/editor/index.min.js 80.3 kB +313 B (0%)
build/editor/style-rtl.css 7.19 kB +206 B (+3%)
build/editor/style.css 7.2 kB +208 B (+3%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 955 B
build/annotations/index.min.js 2.27 kB
build/api-fetch/index.min.js 2.32 kB
build/autop/index.min.js 2.1 kB
build/blob/index.min.js 578 B
build/block-directory/index.min.js 7.26 kB
build/block-directory/style-rtl.css 1.03 kB
build/block-directory/style.css 1.03 kB
build/block-editor/default-editor-styles-rtl.css 395 B
build/block-editor/default-editor-styles.css 395 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 133 B
build/block-library/blocks/audio/theme.css 133 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 104 B
build/block-library/blocks/avatar/style.css 104 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 415 B
build/block-library/blocks/button/editor.css 414 B
build/block-library/blocks/button/style-rtl.css 627 B
build/block-library/blocks/button/style.css 626 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 421 B
build/block-library/blocks/columns/style.css 421 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 671 B
build/block-library/blocks/cover/editor.css 674 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/style-rtl.css 410 B
build/block-library/blocks/embed/style.css 410 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 327 B
build/block-library/blocks/file/style-rtl.css 280 B
build/block-library/blocks/file/style.css 281 B
build/block-library/blocks/file/view.min.js 324 B
build/block-library/blocks/footnotes/style-rtl.css 201 B
build/block-library/blocks/footnotes/style.css 199 B
build/block-library/blocks/form-input/editor-rtl.css 227 B
build/block-library/blocks/form-input/editor.css 227 B
build/block-library/blocks/form-input/style-rtl.css 343 B
build/block-library/blocks/form-input/style.css 343 B
build/block-library/blocks/form-submission-notification/editor-rtl.css 340 B
build/block-library/blocks/form-submission-notification/editor.css 340 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/form/view.min.js 471 B
build/block-library/blocks/freeform/editor-rtl.css 2.61 kB
build/block-library/blocks/freeform/editor.css 2.61 kB
build/block-library/blocks/gallery/editor-rtl.css 956 B
build/block-library/blocks/gallery/editor.css 960 B
build/block-library/blocks/gallery/style-rtl.css 1.72 kB
build/block-library/blocks/gallery/style.css 1.72 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/style-rtl.css 103 B
build/block-library/blocks/group/style.css 103 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 189 B
build/block-library/blocks/heading/style.css 189 B
build/block-library/blocks/html/editor-rtl.css 336 B
build/block-library/blocks/html/editor.css 337 B
build/block-library/blocks/image/editor-rtl.css 878 B
build/block-library/blocks/image/editor.css 878 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 133 B
build/block-library/blocks/image/theme.css 133 B
build/block-library/blocks/image/view.min.js 1.54 kB
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 306 B
build/block-library/blocks/media-text/editor.css 305 B
build/block-library/blocks/media-text/style-rtl.css 505 B
build/block-library/blocks/media-text/style.css 503 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 668 B
build/block-library/blocks/navigation-link/editor.css 669 B
build/block-library/blocks/navigation-link/style-rtl.css 259 B
build/block-library/blocks/navigation-link/style.css 257 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 296 B
build/block-library/blocks/navigation-submenu/editor.css 295 B
build/block-library/blocks/navigation/editor-rtl.css 2.26 kB
build/block-library/blocks/navigation/editor.css 2.26 kB
build/block-library/blocks/navigation/style-rtl.css 2.26 kB
build/block-library/blocks/navigation/style.css 2.25 kB
build/block-library/blocks/navigation/view.min.js 1.03 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 377 B
build/block-library/blocks/page-list/editor.css 377 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 235 B
build/block-library/blocks/paragraph/editor.css 235 B
build/block-library/blocks/paragraph/style-rtl.css 335 B
build/block-library/blocks/paragraph/style.css 335 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 508 B
build/block-library/blocks/post-comments-form/style.css 508 B
build/block-library/blocks/post-content/editor-rtl.css 74 B
build/block-library/blocks/post-content/editor.css 74 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/style-rtl.css 342 B
build/block-library/blocks/post-featured-image/style.css 342 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/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 409 B
build/block-library/blocks/post-template/style.css 408 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 125 B
build/block-library/blocks/preformatted/style.css 125 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 354 B
build/block-library/blocks/pullquote/style.css 353 B
build/block-library/blocks/pullquote/theme-rtl.css 174 B
build/block-library/blocks/pullquote/theme.css 174 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 486 B
build/block-library/blocks/query/editor.css 486 B
build/block-library/blocks/query/view.min.js 958 B
build/block-library/blocks/quote/style-rtl.css 237 B
build/block-library/blocks/quote/style.css 237 B
build/block-library/blocks/quote/theme-rtl.css 233 B
build/block-library/blocks/quote/theme.css 235 B
build/block-library/blocks/read-more/style-rtl.css 140 B
build/block-library/blocks/read-more/style.css 140 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 184 B
build/block-library/blocks/search/editor.css 184 B
build/block-library/blocks/search/style-rtl.css 690 B
build/block-library/blocks/search/style.css 689 B
build/block-library/blocks/search/theme-rtl.css 114 B
build/block-library/blocks/search/theme.css 114 B
build/block-library/blocks/search/view.min.js 478 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 239 B
build/block-library/blocks/separator/style.css 239 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 323 B
build/block-library/blocks/shortcode/editor.css 323 B
build/block-library/blocks/site-logo/style-rtl.css 204 B
build/block-library/blocks/site-logo/style.css 204 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 676 B
build/block-library/blocks/social-links/editor.css 675 B
build/block-library/blocks/social-links/style-rtl.css 1.48 kB
build/block-library/blocks/social-links/style.css 1.48 kB
build/block-library/blocks/spacer/editor-rtl.css 350 B
build/block-library/blocks/spacer/editor.css 350 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 395 B
build/block-library/blocks/table/editor.css 395 B
build/block-library/blocks/table/style-rtl.css 639 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/style-rtl.css 251 B
build/block-library/blocks/tag-cloud/style.css 253 B
build/block-library/blocks/template-part/editor-rtl.css 431 B
build/block-library/blocks/template-part/editor.css 431 B
build/block-library/blocks/template-part/theme-rtl.css 107 B
build/block-library/blocks/template-part/theme.css 107 B
build/block-library/blocks/term-description/style-rtl.css 111 B
build/block-library/blocks/term-description/style.css 111 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 185 B
build/block-library/blocks/video/style.css 185 B
build/block-library/blocks/video/theme-rtl.css 133 B
build/block-library/blocks/video/theme.css 133 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.11 kB
build/block-library/common.css 1.11 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
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 14.8 kB
build/block-library/style.css 14.8 kB
build/block-library/theme-rtl.css 707 B
build/block-library/theme.css 713 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 51.7 kB
build/commands/index.min.js 15.2 kB
build/commands/style-rtl.css 953 B
build/commands/style.css 951 B
build/core-commands/index.min.js 2.77 kB
build/core-data/index.min.js 72.5 kB
build/customize-widgets/index.min.js 11 kB
build/customize-widgets/style-rtl.css 1.36 kB
build/customize-widgets/style.css 1.36 kB
build/data-controls/index.min.js 640 B
build/data/index.min.js 9 kB
build/date/index.min.js 17.9 kB
build/deprecated/index.min.js 451 B
build/dom-ready/index.min.js 324 B
build/dom/index.min.js 4.65 kB
build/edit-post/classic-rtl.css 578 B
build/edit-post/classic.css 578 B
build/edit-widgets/index.min.js 17.6 kB
build/edit-widgets/style-rtl.css 4.17 kB
build/edit-widgets/style.css 4.16 kB
build/element/index.min.js 4.83 kB
build/escape-html/index.min.js 537 B
build/format-library/index.min.js 8.07 kB
build/format-library/style-rtl.css 493 B
build/format-library/style.css 492 B
build/hooks/index.min.js 1.55 kB
build/html-entities/index.min.js 448 B
build/i18n/index.min.js 3.58 kB
build/interactivity/debug.min.js 16.2 kB
build/interactivity/file.min.js 447 B
build/interactivity/image.min.js 1.67 kB
build/interactivity/index.min.js 13 kB
build/interactivity/navigation.min.js 1.17 kB
build/interactivity/query.min.js 740 B
build/interactivity/router.min.js 2.79 kB
build/interactivity/search.min.js 618 B
build/is-shallow-equal/index.min.js 527 B
build/keyboard-shortcuts/index.min.js 1.3 kB
build/keycodes/index.min.js 1.46 kB
build/list-reusable-blocks/index.min.js 2.11 kB
build/list-reusable-blocks/style-rtl.css 851 B
build/list-reusable-blocks/style.css 851 B
build/media-utils/index.min.js 2.92 kB
build/modules/importmap-polyfill.min.js 12.2 kB
build/notices/index.min.js 948 B
build/nux/index.min.js 1.57 kB
build/nux/style-rtl.css 748 B
build/nux/style.css 744 B
build/patterns/index.min.js 6.47 kB
build/patterns/style-rtl.css 595 B
build/patterns/style.css 595 B
build/plugins/index.min.js 1.8 kB
build/preferences-persistence/index.min.js 2.06 kB
build/preferences/index.min.js 2.85 kB
build/preferences/style-rtl.css 710 B
build/preferences/style.css 712 B
build/primitives/index.min.js 975 B
build/priority-queue/index.min.js 1.52 kB
build/private-apis/index.min.js 1 kB
build/react-i18n/index.min.js 623 B
build/react-refresh-entry/index.min.js 9.47 kB
build/react-refresh-runtime/index.min.js 6.78 kB
build/redux-routine/index.min.js 2.7 kB
build/reusable-blocks/index.min.js 2.73 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 10 kB
build/router/index.min.js 1.88 kB
build/server-side-render/index.min.js 1.96 kB
build/shortcode/index.min.js 1.39 kB
build/style-engine/index.min.js 2.03 kB
build/token-list/index.min.js 582 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.7 kB
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 957 B
build/warning/index.min.js 249 B
build/widgets/index.min.js 7.23 kB
build/widgets/style-rtl.css 1.17 kB
build/widgets/style.css 1.17 kB
build/wordcount/index.min.js 1.02 kB

compressed-size-action

@jameskoster
Copy link
Contributor

Seems like a step in the right direction.

Do you think we need the 'Skip' link for columns?

There's a quirk in the hover interaction – you can cursor over the button, and the background changes. But the icon doesn't change until you cursor further inside the button:

hover.mp4

@jasmussen
Copy link
Contributor Author

Do you think we need the 'Skip' link for columns?

I don't, but I kept it for now to keep the PR smallish, there's a good amount of red in the diff already.

Good catch on the hover interaction! My instinct is to make the icon itself change color on hover, I'll do that unless anyone objects.

@jameskoster
Copy link
Contributor

Not for this PR, and I know we discussed it before, but I wonder if the thumbnail 'icons' could be inspiration for the de-selected state for empty groups and columns, so that the UX matches images. For example an empty group could be a box, empty columns could be 3 adjacent boxes. Might work better in the site view?

Updated placeholders Current placeholders
Screenshot 2024-03-25 at 09 28 33 Screenshot 2024-03-25 at 09 30 16

@jasmussen jasmussen changed the title Draft/Experiment: Explore unified placeholders. Unify placeholders Mar 25, 2024
@jasmussen jasmussen requested review from a team and removed request for a team April 1, 2024 09:04
Copy link
Contributor

@t-hamano t-hamano left a comment

Choose a reason for hiding this comment

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

If this PR ships, it will also resolve some of the issues mentioned in #41961.

In order to move this PR forward, I think it is necessary to investigate from two perspectives.

Placeholder as a component

This PR brings major changes to the layout of the component. Below is a screenshot from Storybook.

Before:

before-storybook

After:

after-storybook

In my experience, this component is relatively popular among developers. I think we need to get feedback from @WordPress/gutenberg-components on how much of an impact this change will have.

Placeholder as the initial state of the block

Regarding variation labels, I would recommend displaying them. There should be enough space to display the text.

For example, with the Column block, We won't be able to see the visual proportions of each variation.

column-placeholder

Adding visible text to variations is also mentioned in #60217.

Comment on lines 56 to 58
<span className="block-editor-block-variation-picker__variation-label">
{ variation.title }
</span>
Copy link
Contributor

Choose a reason for hiding this comment

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

I think this is a breaking change in the BlockVariationPicker component. The title prop defined in the block variation will no longer be referenced.

Copy link
Member

Choose a reason for hiding this comment

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

It'll be referenced if there is no description. As an alternative, would adding a prop to not have title be fine for each variation? They're not always helpful, like in these.

Copy link
Member

Choose a reason for hiding this comment

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

Perhaps in __experimentalBlockVariationPicker

@jasmussen
Copy link
Contributor Author

Thank you for the review, I will try and address your points when I have a moment. Also feel free to push directly if you have chnages in the mean time. 🙏

@mirka mirka requested a review from a team April 1, 2024 18:45
@jasmussen jasmussen self-assigned this Apr 15, 2024
@richtabor
Copy link
Member

A good step in the right direction, but we do need to also improve when the placeholders are smaller:

CleanShot 2024-04-15 at 17 41 02

@jasmussen
Copy link
Contributor Author

Good notes, thank you for the help! I've still on my radar to bring this home, hopefully I'll have some time tomorrow.

@t-hamano
Copy link
Contributor

I'm in favor of refining the Placeholder component, but I am against removing the title from the BlockVariationPicker component and hiding the label.

This component has been around for a long time, but the title label didn't originally exist. Later, the missing label was raised as an issue in #18737, and the label was added in #19789.

As mentioned in #18737, the BlockVariationPicker component is also used by block developers, so there is no guarantee that the icon accurately represents the variation.

In this PR, can we focus on the following two things?

  • Refine the Placeholder component itself
  • For BlockVariationPicker components, only adjust the layout. In other words, title labels should remain visible in the Columns block.

Personally, I would also like to see labels added to the Group block variations. In other words, rather than displaying hard-coded variation buttons, we simply use the BlockVariationPicker components. This should also match the approach attempted in #60217.

@jasmussen
Copy link
Contributor Author

What do you think, should we land this?

@jasmussen
Copy link
Contributor Author

Also, @t-hamano you voiced some specific concerns, when you have a moment can you see if they are addressed in this PR?

@jasmussen
Copy link
Contributor Author

To remove a point of controversy, I centered the button text:

centered text

This is consistent with other fullwide buttons. I do think it can make sense to revisit that, but best to do holistically.

Copy link
Contributor

@jameskoster jameskoster left a comment

Choose a reason for hiding this comment

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

I'm not fully opposed to the left-aligned buttons, they just feel a bit unexpected compared with similar examples:

Screenshot 2024-04-25 at 13 33 08 Screenshot 2024-04-25 at 13 33 15 Screenshot 2024-04-25 at 13 33 26

Agree on exploring that separately.


Otherwise this seems good to go in terms of design in core blocks. It may still be worth testing with block plugins making use of these components?

@t-hamano
Copy link
Contributor

@jasmussen Thank you for the update! I will definitely check this PR tomorrow.

It may still be worth testing with block plugins making use of these components?

I think this test is necessary. Many plugins use this component, some of which have a very large number of active installs. I'm going to test these as well.

Search - WPdirectory

@richtabor
Copy link
Member

A few comments:

  1. What about using 4px on all sides of the icon buttons here:
Current Proposed
CleanShot 2024-04-25 at 09 45 40 CleanShot 2024-04-25 at 09 44 14
  1. The featured image block's illustrated placeholder upload button is no longer centered:
    CleanShot 2024-04-25 at 09 43 10

@jasmussen
Copy link
Contributor Author

Good catches, I'll address those!

@richtabor
Copy link
Member

Overall, this is a good step forward.

Thinking out loud here. As a post-merge question, I do wonder though what the ideal placeholder for layout placeholders specifically should be (and if we're there with this effort).

For example, if I add a group block, do I need to see the group block label with instructions? Should the columns block placeholder look the same as the group block? You're choosing a layout; do you need to be informed to pick a layout—especially if we decided it's not necessary for group blocks?

Would it matter if these looked the same?

CleanShot 2024-04-25 at 09 50 46

@t-hamano t-hamano self-requested a review April 26, 2024 05:03
Copy link
Contributor

@t-hamano t-hamano left a comment

Choose a reason for hiding this comment

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

I looked into the parts this PR is related to. I think a few things need to be addressed in order for this PR to ship. Sorry for including so many screenshots 😅

BlockVariationPicker

I'm a little concerned about the button being adjacent to the label when focused. How about adding a margin of around 4px above the label?

block-variation-picker-spacing

Blocks

Embeds Block

The layout is a little broken.

trunk This PR
embeds-block-before embeds-block-after

Also, this margin is probably unnecessary.

.wp-block-embed__learn-more {
margin-top: 1em;

Image Block, Video Block

The buttons are centered. This is due to the style here. This style is only needed for the Site Logo block and Featured Image block, so I think it's better to define it as an editor style for the individual blocks rather than for the Placehoder component itself.

video-block

Post Featured Image Block

In mobile view, the upload button is shifted to the left.

featured-image-block-mobile

Site Logo Block

The upload button is shifted to the left.

site-logo-block

Block Plugins

I've tested some plugins that have a very high number of installs, and they don't seem to have a big impact.

Screenshots

JetPack - Form Block

plugin-jetpack-form

plugin-jetpack-form-mobile

CoBlocks - Carousel

coblocks-carousel

Otter Blocks - Popup

otter-blocks-popup

Others

I think these can be done as a follow-up, but we may also want to consider them as the next step.

  • Elements with the components-placeholder__fieldset class are always rendered, resulting in unnecessary white space if the Placeholder component has no children. If there are no children, the element itself should not be rendered.

placeholder-spacing

  • Why hide instructions in the mobile viewport?

  • Several blocks contain CSS that overrides the default styles of placeholders. Some of these should be able to be removed after this PR is applied.

@jasmussen
Copy link
Contributor Author

Thank you for the in-depth feedback 🙏 — I have pushed fixes and hope I do it justice. At a high level, here it should all be captured:

status

I would really like to land this because so many opportunities for improvement appear when touching this, but I also would love to keep the PR as focused as possible so as to not balloon. Just one example, here's the Embed block URL:
Screenshot 2024-04-26 at 12 39 52

That right margin makes the gap between input and button look wrong. It comes from here:
Screenshot 2024-04-26 at 12 40 28

That feels a bit too opinionated. But I also don't want to touch that as part of this PR, ideally, to keep things as on-topic as possible.

For that same reason, I kept the Embed improvements a separate commit. It now looks like this:

Screenshot 2024-04-26 at 12 45 01

I used VStack and HStack to keep things simple. Hope that's reasonable.

@jasmussen
Copy link
Contributor Author

I wanted to touch on this separately because there's an important nuance.

Why hide instructions in the mobile viewport?

It is not hidden on the mobile viewport. It is hidden when the placeholder becomes small. So there's a JS based element query at play here that applies is-medium and is-small CSS classes based on the width of the placeholder.

This is because Placeholder states can be as small as this:

site logo

We are so used to seeing the big wide placeholder patterns that it's tempted to add icons, titles, descriptions, notices, error states, and more. But the fact is that it's increasingly common to have patterns that put these blocks with placeholder states in extremely narrow contexts. Here's one from Twenty Twenty-Four:

pattern

That's from this branch, and it's revealing some brokenness that I'm now diving in to fix.

But I'm sharing because the fact that blocks with placeholder states can become as broken as they are in trunk, when used in narrow contexts, is the entire and full motivation for why this PR initially removed far more than what we ended up with here. The unfortunate fact is that the Placeholder pattern did not scale as it was initially intended.

Test pattern
<!-- wp:columns {"style":{"spacing":{"blockGap":{"top":"0","left":"var:preset|spacing|40"},"margin":{"top":"0","bottom":"0"}}}} -->
<div class="wp-block-columns" style="margin-top:0;margin-bottom:0"><!-- wp:column {"style":{"spacing":{"blockGap":"0"}}} -->
<div class="wp-block-column"><!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|50"}},"layout":{"type":"constrained"}} -->
<div class="wp-block-group"><!-- wp:image -->
<figure class="wp-block-image"><img alt=""/></figure>
<!-- /wp:image -->

<!-- wp:image -->
<figure class="wp-block-image"><img alt=""/></figure>
<!-- /wp:image -->

<!-- wp:image -->
<figure class="wp-block-image"><img alt=""/></figure>
<!-- /wp:image --></div>
<!-- /wp:group --></div>
<!-- /wp:column -->

<!-- wp:column {"style":{"spacing":{"blockGap":"0","padding":{"top":"0"}}}} -->
<div class="wp-block-column" style="padding-top:0"><!-- wp:spacer {"height":"var:preset|spacing|50"} -->
<div style="height:var(--wp--preset--spacing--50)" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|50"}},"layout":{"type":"constrained"}} -->
<div class="wp-block-group"><!-- wp:image -->
<figure class="wp-block-image"><img alt=""/></figure>
<!-- /wp:image -->

<!-- wp:image -->
<figure class="wp-block-image"><img alt=""/></figure>
<!-- /wp:image -->

<!-- wp:image -->
<figure class="wp-block-image"><img alt=""/></figure>
<!-- /wp:image --></div>
<!-- /wp:group -->

<!-- wp:spacer {"height":"var:preset|spacing|50"} -->
<div style="height:var(--wp--preset--spacing--50)" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer --></div>
<!-- /wp:column -->

<!-- wp:column {"style":{"spacing":{"blockGap":"0"}}} -->
<div class="wp-block-column"><!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|50"}},"layout":{"type":"constrained"}} -->
<div class="wp-block-group"><!-- wp:image -->
<figure class="wp-block-image"><img alt=""/></figure>
<!-- /wp:image -->

<!-- wp:image -->
<figure class="wp-block-image"><img alt=""/></figure>
<!-- /wp:image -->

<!-- wp:image -->
<figure class="wp-block-image"><img alt=""/></figure>
<!-- /wp:image --></div>
<!-- /wp:group --></div>
<!-- /wp:column -->

<!-- wp:column {"style":{"spacing":{"blockGap":"0","padding":{"top":"0"}}}} -->
<div class="wp-block-column" style="padding-top:0"><!-- wp:spacer {"height":"var:preset|spacing|50"} -->
<div style="height:var(--wp--preset--spacing--50)" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:group {"style":{"spacing":{"blockGap":"var:preset|spacing|50"}},"layout":{"type":"constrained"}} -->
<div class="wp-block-group"><!-- wp:image -->
<figure class="wp-block-image"><img alt=""/></figure>
<!-- /wp:image -->

<!-- wp:image -->
<figure class="wp-block-image"><img alt=""/></figure>
<!-- /wp:image -->

<!-- wp:image -->
<figure class="wp-block-image"><img alt=""/></figure>
<!-- /wp:image --></div>
<!-- /wp:group -->

<!-- wp:spacer {"height":"var:preset|spacing|50"} -->
<div style="height:var(--wp--preset--spacing--50)" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer --></div>
<!-- /wp:column --></div>
<!-- /wp:columns -->

@jasmussen
Copy link
Contributor Author

I fixed an issue with site logo centering, and further polished very narrow contexts. Here's thin columns:

Screenshot 2024-04-26 at 13 18 00

Yes, that's not ideal, but here's trunk:

Screenshot 2024-04-26 at 13 20 28

I do not believe there's a way to address those contexts without either moving items into a modal opened by a button, or more generally moving towards this.

The PR should now be ready for any final thoughts. Thanks again for all your outstanding feedback. Thank you!

Copy link
Contributor

@t-hamano t-hamano left a comment

Choose a reason for hiding this comment

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

LGTM! I believe it now looks correct in all scenarios.

Regarding blocks with the placeholder form, such as the Embed block, #41961 should continue to improve them.

I don't think there is currently a perfect solution to the problem, which is a very narrow context. But at least this PR is better than the trunk.

@jasmussen
Copy link
Contributor Author

Any concerns about merging on a Friday? Happy to hold off until Monday if you all prefer!

@t-hamano
Copy link
Contributor

I think it's okay to merge now 🚀

@jasmussen jasmussen merged commit ff01bcb into trunk Apr 26, 2024
65 checks passed
@jasmussen jasmussen deleted the try/update-placeholders branch April 26, 2024 13:14
@jasmussen
Copy link
Contributor Author

Thanks all. I'll look at followups, and will keep monitoring feedback on this PR as well.

@github-actions github-actions bot added this to the Gutenberg 18.3 milestone Apr 26, 2024
huubl pushed a commit to huubl/gutenberg that referenced this pull request Apr 26, 2024
* Draft/Experiment: Explore unified placeholders.

* Remove comments.

* Update label.

* Update hover styles.

* Update changelog.

* Use 2px consistent icons across group and columns

* Use : in variation instructions

* Add target for hover

* Show title.

* Initial layout work.

* Improve behavior for narrow contexts.

* Polish.

* Apply margin to Group as well.

* Center the buttons when small.

* Center upload, 4px padding.

* Address feedback (4px gap, justification)

* Update embed block.

* Fix site logo centering, improve very small contexts.

---------

Co-authored-by: Rich Tabor <hi@richtabor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Type] Code Quality Issues or PRs that relate to code quality
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants