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

Improve background image control #54439

Merged
merged 9 commits into from
Sep 21, 2023
Merged

Conversation

richtabor
Copy link
Member

@richtabor richtabor commented Sep 13, 2023

What?

Follow-up #53934 to bring this more in line with the color controls. There are also less changes between states (with or without a background image added). I don't love the duplicate panel and button labels though.

A11y based on feedback from the accessibility channel on the Making WordPress Slack.

Testing Instructions

  1. Open a post or page.
  2. Insert a group block.
  3. Add a background image via the control.
  4. See changes.

Screenshots or screencast

After

CleanShot.2023-09-13.at.16.44.44.mp4

@github-actions
Copy link

github-actions bot commented Sep 13, 2023

Size Change: +92.9 kB (+6%) 🔍

Total Size: 1.62 MB

Filename Size Change
build/block-directory/index.min.js 7.03 kB +16 B (0%)
build/block-editor/index.min.js 217 kB +849 B (0%)
build/block-editor/style-rtl.css 15.5 kB +434 B (+3%)
build/block-editor/style.css 15.5 kB +431 B (+3%)
build/block-library/blocks/image/view-interactivity.min.js 0 B -1.83 kB (removed) 🏆
build/block-library/blocks/query/editor-rtl.css 486 B +8 B (+2%)
build/block-library/blocks/query/editor.css 486 B +9 B (+2%)
build/block-library/blocks/query/style-rtl.css 375 B +5 B (+1%)
build/block-library/blocks/query/style.css 372 B +4 B (+1%)
build/block-library/editor-rtl.css 12.2 kB +6 B (0%)
build/block-library/editor.css 12.1 kB +5 B (0%)
build/block-library/index.min.js 205 kB +837 B (0%)
build/blocks/index.min.js 51.3 kB -47 B (0%)
build/commands/index.min.js 15.5 kB +10 B (0%)
build/components/index.min.js 255 kB +669 B (0%)
build/components/style-rtl.css 11.7 kB -8 B (0%)
build/components/style.css 11.7 kB -7 B (0%)
build/compose/index.min.js 12.7 kB +610 B (+5%) 🔍
build/core-data/index.min.js 17 kB +199 B (+1%)
build/edit-post/index.min.js 35.5 kB +29 B (0%)
build/edit-site/index.min.js 181 kB +89.2 kB (+97%) 🆘
build/edit-site/style-rtl.css 13.8 kB +307 B (+2%)
build/edit-site/style.css 13.8 kB +307 B (+2%)
build/editor/index.min.js 45.6 kB +48 B (0%)
build/editor/style-rtl.css 3.53 kB +1 B (0%)
build/editor/style.css 3.52 kB +1 B (0%)
build/format-library/index.min.js 7.72 kB +17 B (0%)
build/patterns/index.min.js 3.35 kB +652 B (+24%) 🚨
build/patterns/style-rtl.css 302 B +62 B (+26%) 🚨
build/patterns/style.css 302 B +62 B (+26%) 🚨
build/primitives/index.min.js 975 B +32 B (+3%)
build/rich-text/index.min.js 10.2 kB -35 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 955 B
build/annotations/index.min.js 2.69 kB
build/api-fetch/index.min.js 2.28 kB
build/autop/index.min.js 2.1 kB
build/blob/index.min.js 451 B
build/block-directory/style-rtl.css 1.02 kB
build/block-directory/style.css 1.02 kB
build/block-editor/content-rtl.css 4.25 kB
build/block-editor/content.css 4.24 kB
build/block-editor/default-editor-styles-rtl.css 381 B
build/block-editor/default-editor-styles.css 381 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 126 B
build/block-library/blocks/audio/theme.css 126 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 584 B
build/block-library/blocks/button/editor.css 582 B
build/block-library/blocks/button/style-rtl.css 629 B
build/block-library/blocks/button/style.css 628 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 647 B
build/block-library/blocks/cover/editor.css 650 B
build/block-library/blocks/cover/style-rtl.css 1.69 kB
build/block-library/blocks/cover/style.css 1.68 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 98 B
build/block-library/blocks/details/style.css 98 B
build/block-library/blocks/embed/editor-rtl.css 293 B
build/block-library/blocks/embed/editor.css 293 B
build/block-library/blocks/embed/style-rtl.css 410 B
build/block-library/blocks/embed/style.css 410 B
build/block-library/blocks/embed/theme-rtl.css 126 B
build/block-library/blocks/embed/theme.css 126 B
build/block-library/blocks/file/editor-rtl.css 316 B
build/block-library/blocks/file/editor.css 316 B
build/block-library/blocks/file/style-rtl.css 311 B
build/block-library/blocks/file/style.css 312 B
build/block-library/blocks/file/view.min.js 318 B
build/block-library/blocks/footnotes/style-rtl.css 201 B
build/block-library/blocks/footnotes/style.css 199 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 947 B
build/block-library/blocks/gallery/editor.css 952 B
build/block-library/blocks/gallery/style-rtl.css 1.53 kB
build/block-library/blocks/gallery/style.css 1.53 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 654 B
build/block-library/blocks/group/editor.css 654 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 76 B
build/block-library/blocks/heading/style.css 76 B
build/block-library/blocks/html/editor-rtl.css 336 B
build/block-library/blocks/html/editor.css 337 B
build/block-library/blocks/image/editor-rtl.css 834 B
build/block-library/blocks/image/editor.css 833 B
build/block-library/blocks/image/style-rtl.css 1.42 kB
build/block-library/blocks/image/style.css 1.41 kB
build/block-library/blocks/image/theme-rtl.css 126 B
build/block-library/blocks/image/theme.css 126 B
build/block-library/blocks/image/view.min.js 1.83 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 266 B
build/block-library/blocks/media-text/editor.css 263 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 115 B
build/block-library/blocks/navigation-link/style.css 115 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.23 kB
build/block-library/blocks/navigation/style.css 2.22 kB
build/block-library/blocks/navigation/view.min.js 984 B
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 401 B
build/block-library/blocks/page-list/editor.css 401 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 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-date/style-rtl.css 61 B
build/block-library/blocks/post-date/style.css 61 B
build/block-library/blocks/post-excerpt/editor-rtl.css 71 B
build/block-library/blocks/post-excerpt/editor.css 71 B
build/block-library/blocks/post-excerpt/style-rtl.css 141 B
build/block-library/blocks/post-excerpt/style.css 141 B
build/block-library/blocks/post-featured-image/editor-rtl.css 588 B
build/block-library/blocks/post-featured-image/editor.css 586 B
build/block-library/blocks/post-featured-image/style-rtl.css 319 B
build/block-library/blocks/post-featured-image/style.css 319 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 314 B
build/block-library/blocks/post-template/style.css 314 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 335 B
build/block-library/blocks/pullquote/style.css 335 B
build/block-library/blocks/pullquote/theme-rtl.css 168 B
build/block-library/blocks/pullquote/theme.css 168 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 302 B
build/block-library/blocks/query-pagination/style.css 299 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/view.min.js 555 B
build/block-library/blocks/quote/style-rtl.css 222 B
build/block-library/blocks/quote/style.css 222 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/read-more/style-rtl.css 132 B
build/block-library/blocks/read-more/style.css 132 B
build/block-library/blocks/rss/editor-rtl.css 149 B
build/block-library/blocks/rss/editor.css 149 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 178 B
build/block-library/blocks/search/editor.css 178 B
build/block-library/blocks/search/style-rtl.css 607 B
build/block-library/blocks/search/style.css 607 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 468 B
build/block-library/blocks/separator/editor-rtl.css 146 B
build/block-library/blocks/separator/editor.css 146 B
build/block-library/blocks/separator/style-rtl.css 234 B
build/block-library/blocks/separator/style.css 234 B
build/block-library/blocks/separator/theme-rtl.css 194 B
build/block-library/blocks/separator/theme.css 194 B
build/block-library/blocks/shortcode/editor-rtl.css 323 B
build/block-library/blocks/shortcode/editor.css 323 B
build/block-library/blocks/site-logo/editor-rtl.css 754 B
build/block-library/blocks/site-logo/editor.css 754 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 682 B
build/block-library/blocks/social-links/editor.css 681 B
build/block-library/blocks/social-links/style-rtl.css 1.44 kB
build/block-library/blocks/social-links/style.css 1.43 kB
build/block-library/blocks/spacer/editor-rtl.css 348 B
build/block-library/blocks/spacer/editor.css 348 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 432 B
build/block-library/blocks/table/editor.css 432 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 146 B
build/block-library/blocks/table/theme.css 146 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 403 B
build/block-library/blocks/template-part/editor.css 403 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/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 126 B
build/block-library/blocks/video/theme.css 126 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.1 kB
build/block-library/common.css 1.1 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 13.9 kB
build/block-library/style.css 13.9 kB
build/block-library/theme-rtl.css 688 B
build/block-library/theme.css 693 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.87 kB
build/commands/style-rtl.css 921 B
build/commands/style.css 918 B
build/core-commands/index.min.js 2.6 kB
build/customize-widgets/index.min.js 12 kB
build/customize-widgets/style-rtl.css 1.48 kB
build/customize-widgets/style.css 1.48 kB
build/data-controls/index.min.js 640 B
build/data/index.min.js 8.84 kB
build/date/index.min.js 17.8 kB
build/deprecated/index.min.js 451 B
build/dom-ready/index.min.js 324 B
build/dom/index.min.js 4.64 kB
build/edit-post/classic-rtl.css 544 B
build/edit-post/classic.css 545 B
build/edit-post/style-rtl.css 7.84 kB
build/edit-post/style.css 7.83 kB
build/edit-widgets/index.min.js 16.9 kB
build/edit-widgets/style-rtl.css 4.8 kB
build/edit-widgets/style.css 4.79 kB
build/element/index.min.js 4.82 kB
build/escape-html/index.min.js 537 B
build/format-library/style-rtl.css 554 B
build/format-library/style.css 553 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/index.min.js 11.3 kB
build/is-shallow-equal/index.min.js 527 B
build/keyboard-shortcuts/index.min.js 1.72 kB
build/keycodes/index.min.js 1.87 kB
build/list-reusable-blocks/index.min.js 2.2 kB
build/list-reusable-blocks/style-rtl.css 836 B
build/list-reusable-blocks/style.css 836 B
build/media-utils/index.min.js 2.9 kB
build/notices/index.min.js 948 B
build/nux/index.min.js 1.99 kB
build/nux/style-rtl.css 735 B
build/nux/style.css 732 B
build/plugins/index.min.js 1.79 kB
build/preferences-persistence/index.min.js 1.84 kB
build/preferences/index.min.js 1.24 kB
build/priority-queue/index.min.js 1.52 kB
build/private-apis/index.min.js 958 B
build/react-i18n/index.min.js 615 B
build/react-refresh-entry/index.min.js 9.47 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.7 kB
build/reusable-blocks/index.min.js 2.7 kB
build/reusable-blocks/style-rtl.css 243 B
build/reusable-blocks/style.css 243 B
build/router/index.min.js 1.78 kB
build/server-side-render/index.min.js 1.94 kB
build/shortcode/index.min.js 1.39 kB
build/style-engine/index.min.js 1.97 kB
build/sync/index.min.js 53.8 kB
build/token-list/index.min.js 582 B
build/url/index.min.js 3.73 kB
build/vendors/inert-polyfill.min.js 2.48 kB
build/vendors/react-dom.min.js 41.8 kB
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 958 B
build/warning/index.min.js 249 B
build/widgets/index.min.js 7.16 kB
build/widgets/style-rtl.css 1.15 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.02 kB

compressed-size-action

@richtabor richtabor self-assigned this Sep 13, 2023
@richtabor richtabor requested review from andrewserong and a team September 13, 2023 20:46
@richtabor richtabor added [Type] Enhancement A suggestion for improvement. [Block] Group Affects the Group Block [Feature] Design Tools Tools that impact the appearance of blocks both to expand the number of tools and improve the experi labels Sep 13, 2023
@richtabor richtabor added the Needs Accessibility Feedback Need input from accessibility label Sep 13, 2023
@richtabor richtabor marked this pull request as ready for review September 14, 2023 00:15
Copy link
Contributor

@andrewserong andrewserong left a comment

Choose a reason for hiding this comment

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

Thanks for opening this PR to improve the accessibility!

I notice this no longer displays the label, title or filename for the selected background image, is that intentional?

Trunk This PR
image image

@@ -96,19 +97,38 @@ export function resetBackgroundImage( { attributes = {}, setAttributes } ) {
} );
}

function InspectorImagePreview( { label, url: imgUrl } ) {
function InspectorImagePreview( { label, filename, url: imgUrl } ) {
const imgLabel = label || getFilename( imgUrl );
Copy link
Contributor

@andrewserong andrewserong Sep 14, 2023

Choose a reason for hiding this comment

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

imgLabel appears to now always be Background image 🤔

Copy link
Member Author

Choose a reason for hiding this comment

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

Yea, we can consolidate that.

@jasmussen
Copy link
Contributor

I like the change to an ItemGroup appearance.

This is perhaps general to the entire implementation, and the name of the panel itself (and thus ultimately separate from this PR), but it feels redundant that the Panel is called "Background image" and the item is called "Background image". I know "Media" and "Background" were discussed as simpler panel titles, and ultimately dismissed, but was this redundancy considered in that conversation, and if not, can we revisit?

@afercia
Copy link
Contributor

afercia commented Sep 14, 2023

Expanding on a specific question asked on Slack: How to communicate the Selected color (or no color selected) for the Text and Background buttons:

Screenshot 2023-09-14 at 10 00 28

ideally:

  • The visible text 'Color" should be the legend element of a fieldset element that wraps the Text and Background buttons.
  • Right now, the buttons text and aria-label attributes greatly mismatch, this is a problem for speech recognition software:
    • Visible text: Text, aria-label: Color Text styles
    • Visible text: Background, aria-label: Color Background styles
  • I wonder whether the aria-labels make any sense. I don't think they are necessary and I'd recommend to remove them.

About name and description:

  • As a general principle, the accessible name should only communicate what a control does or is meant for. Extraneous information like current state, selected value, etc. must not be included in the accessible name.
  • Additional information can be provided with the accessible description of a control.
  • In this case, what the button does and the information about the selected color must be separated.
  • Keep the visible button text.
  • Add an aria-describedby attribute that points to an element containing the additional information. This element can also be hidden with display: none, screen readers will announce the description anyways. Ideally, the description with the color selection should be visible, to help all users.
  • Worth noting that aria-description mentioned in the question on Slack is new in ARIA 1.3, which is not a finalized spec yet. I don't have any info on the actual support for aria-description and anyways it comes from a specification that is not final yet. We can't use it, yet.
  • The div element that wraps the button text has a title attribute that just repeats the visible text. Screenshot:
Screenshot 2023-09-14 at 09 51 06

Please remove it. Honestly, I'm a bit surprised this title attribute slipped through and no one noticed it. It's a few years that WordPress has been progressively removing title attributes from the codebase. Title attributes are only accessible to a tiny fraction o fusers and as such they serve no useful purpose. No new title attributes should be introduced ever in WordPress.

@jameskoster
Copy link
Contributor

but was this redundancy considered in that conversation, and if not, can we revisit?

It was not. As @andrewserong pointed out the control originally displayed the file title/name, but it seems that needs to change for a11y.

I agree that having a "Background image" control within a "Background image" panel now feels redundant.

That said, having a "Background" control in a "Color" panel and a "Background image" control in a "Background" panel feels a bit unorganised. I'd expect to find the background options grouped together.

This may be a can of worms, but did we ever consider contextual color control placement? IE put the text color options in the Typography panel, and the background color option in a Background panel (along with the new background image control). Border color is already organised this way and the inconsistency is a bit strange to me.

@jeryj
Copy link
Contributor

jeryj commented Sep 14, 2023

That said, having a "Background" control in a "Color" panel and a "Background image" control in a "Background" panel feels a bit unorganised. I'd expect to find the background options grouped together.

@richtabor and I discussed this a bit yesterday too. I believe part of the rationale for separate groupings was that there are plans for there to be other controls within the background image area, such as focal point, duotone, etc.

@richtabor
Copy link
Member Author

I notice this no longer displays the label, title or filename for the selected background image, is that intentional?

Yes. Following suite of the color selection above, where there is not the hex value of the color presented visually. And reduces the changing of the button text.

@richtabor
Copy link
Member Author

richtabor commented Sep 14, 2023

but it feels redundant that the Panel is called "Background image" and the item is called "Background image".

Yea I agree. What about if the panel was called "Fill"? That way we can still house other controls like focal point, repeat, etc.

That, or "Media" but I'm not sure on media.

@andrewserong
Copy link
Contributor

but it feels redundant that the Panel is called "Background image" and the item is called "Background image".

Yes, if we switch the label of the button to "Background image" in this PR, I agree, renaming the panel label sounds good. I'd probably vote for "Background" — since the panel is next to the Color panel, maybe it isn't too confusing if there are two things called Background?

Yes. Following suite of the color selection above, where there is not the hex value of the color presented visually. And reduces the changing of the button text.

Ah, gotcha! Yes, I like the consistency of the button in this PR, it does feel more solid that it retains a single state visually between when there's an image and when there isn't one.

One of the challenges with images in comparison to colors is that it's a bit harder to distinguish which particular image you've selected via the thumbnail, whereas with color or gradient colors, the preview is clearer at a glance.

Would it be worth looking at how we might still expose the image title somewhere in the UI, for example as a Tooltip, or potentially in the dropdown menu when you click on the Background image button? In this way, maybe we could borrow the approach from the Replace button in the Image block, where it says "Current media URL:"

image

That could totally be a separate PR, though. Which reminds me, I'll add "support adding images via URL" to the background image tracking issue 🙂

@jameskoster
Copy link
Contributor

I believe part of the rationale for separate groupings was that there are plans for there to be other controls within the background image area, such as focal point, duotone, etc.

The question was more about whether the background color option should move to the Background/Fill panel. Similar to how the border color option lives in the Border panel. But it's a topic for another issue 😅

@richtabor
Copy link
Member Author

Would it be worth looking at how we might still expose the image title somewhere in the UI, for example as a Tooltip, or potentially in the dropdown menu when you click on the Background image button? In this way, maybe we could borrow the approach from the Replace button in the Image block, where it says "Current media URL:"

May be interesting to explore that. Cover does not do this though.

My hesitation is that if your background image is a randomly named image, the title isn't a helpful affordance visually.

One note to add is that while the image indicator is small, you do have the group block in focus on the left as a confirmation. You're not selecting and editing the block without it in view.

@richtabor
Copy link
Member Author

Expanding on a specific question asked on Slack: How to communicate the Selected color (or no color selected) for the Text and Background buttons:

@afercia Do you mind opening a separate issue for that, to continue the discussion for the color and background components. Thanks!

@andrewserong
Copy link
Contributor

My hesitation is that if your background image is a randomly named image, the title isn't a helpful affordance visually.

Good point! Another option would be to only display the tooltip or current media label in the dropdown if a title is set, as the existence of a title from the media library possibly better correlates to a human readable name? In any case, I feel pretty good about our ability to explore those options in follow-ups, so I don't consider that a blocker to the proposed change in this PR, especially since as you point out, the user will see the background image in full in the editor canvas 👍

@richtabor
Copy link
Member Author

In any case, I feel pretty good about our ability to explore those options in follow-ups, so I don't consider that a blocker to the proposed change in this PR, especially since as you point out, the user will see the background image in full in the editor canvas

Agreed!

@richtabor
Copy link
Member Author

I think this works fine:

CleanShot 2023-09-18 at 20 18 55

@richtabor
Copy link
Member Author

Is there anything else needed for this?

@github-actions
Copy link

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

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

@andrewserong
Copy link
Contributor

Is there anything else needed for this?

Looks pretty complete to me! Do we need an accessibility review to ensure everyone's happy with the change? The code looks good to me 👍

I can give it the ✅ tomorrow if we don't hear back from anyone 🙂

@jeryj
Copy link
Contributor

jeryj commented Sep 19, 2023

Tested it out. I'm getting a focus loss when selecting an image. Focus should be returned to the Background image button after any selection that was triggered by the button.

Here are the states I'm getting a focus loss:

  • Escape or Cancel from the Media Library modal when triggered by the Background Image Button. It works correctly when replacing an image via the Open Media Library in the dropdown.
  • Selecting an image from the Media Library modal when triggered by the Background Image Button. It works correctly when replacing an image via the Open Media Library in the dropdown.
  • Reset button from the dropdown.

When there is no image selected, I think we should communicate this in the aria-describedBy as well. Something like, "No image selected."? The selected image description is working great, btw!

@richtabor
Copy link
Member Author

Here are the states I'm getting a focus loss:

I'm cool with following up on this, as the issue persists in trunk.

Copy link
Contributor

@andrewserong andrewserong 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 cool with following up on this, as the issue persists in trunk.

That sounds good to me, too, the changes here are an improvement over what we have on trunk, so this looks like a good iterative improvement to me 👍

I suspect the focus loss issues are to do with using a different button when in the empty state versus when an item is selected. In a follow-up it might be worth trying to see if we can consolidate around only using the MediaReplaceFlow component, even in the empty state, so that the button focus can be properly restored. We'd also need to make sure the drop zone still works as expected.

If that doesn't work, or if we still need the separate button for the empty state, then we could look into explicitly directing focus when onSelectMedia is called. But let's look into that separately.

This is testing nicely for me and looks good in Safari, FF, Chrome, and Edge:

Empty state With an image
image image

LGTM! ✨

@andrewserong
Copy link
Contributor

I'll merge this in now so that it can make it for 6.4 Beta 1. Thanks for working on this @richtabor!

@andrewserong andrewserong merged commit ea24e06 into trunk Sep 21, 2023
51 checks passed
@andrewserong andrewserong deleted the improve/background-image-control branch September 21, 2023 23:27
@github-actions github-actions bot added this to the Gutenberg 16.8 milestone Sep 21, 2023
@andrewserong andrewserong added the Backport to Gutenberg RC Pull request that needs to be backported to a Gutenberg release candidate (RC) label Sep 21, 2023
@andrewserong
Copy link
Contributor

I'm cool with following up on this, as the issue persists in trunk.

I've opened up a follow-up PR that deals with the focus loss problem over in #54711. The solution seems to be to use the MediaReplaceFlow component in both the empty and image-set states, which resolves the focus loss while also setting us up for follow-ups like adding in featured image support.

mikachan pushed a commit that referenced this pull request Sep 22, 2023
* Update background.js

* Update background.scss

* Update background.scss

* Use variables

* Update background.js

* Add describedby for empty state

* Add filename description (wip)

* Update a11y based on feedback

* Use "Background" for panel name
@mikachan
Copy link
Member

I just cherry-picked this PR to the release/16.7 branch to get it included in the next release: e530e3e

@mikachan mikachan removed the Backport to Gutenberg RC Pull request that needs to be backported to a Gutenberg release candidate (RC) label Sep 22, 2023
@femkreations femkreations added the Needs User Documentation Needs new user documentation label Sep 29, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Group Affects the Group Block [Feature] Design Tools Tools that impact the appearance of blocks both to expand the number of tools and improve the experi Needs Accessibility Feedback Need input from accessibility Needs User Documentation Needs new user documentation [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants