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

[Block Library - Image]: Add toolbar button to add a caption #44965

Merged
merged 9 commits into from
Oct 19, 2022

Conversation

ntsekouras
Copy link
Contributor

@ntsekouras ntsekouras commented Oct 14, 2022

What?

Resolves: #44359

This PR adds a toggle toolbar item on Image's Block Toolbar to add/remove a caption. Another change here is that the when we insert an image, the caption is not focused, even if the inserted image has one - this is important for #44918 to add Images from the Inserter and keep the focus there.

When we land an acceptable solution for this, we should probably do the same for Video and Audio blocks.

Testing Instructions

  1. Insert image blocks(with or without captions)
  2. Edit captions, navigate around history after changes(undo/redo) and select various blocks.

Screenshots or screencast

Screen.Recording.2022-10-14.at.8.54.26.AM.mov

@ntsekouras ntsekouras added [Package] Block library /packages/block-library [Block] Image Affects the Image Block labels Oct 14, 2022
@ntsekouras ntsekouras self-assigned this Oct 14, 2022
@github-actions
Copy link

github-actions bot commented Oct 14, 2022

Size Change: +1.1 kB (0%)

Total Size: 1.27 MB

Filename Size Change
build/block-editor/index.min.js 168 kB +424 B (0%)
build/block-editor/style-rtl.css 15.8 kB +259 B (+2%)
build/block-editor/style.css 15.8 kB +263 B (+2%)
build/block-library/blocks/image/editor-rtl.css 880 B -4 B (0%)
build/block-library/blocks/image/editor.css 880 B -2 B (0%)
build/block-library/editor-rtl.css 11.2 kB +2 B (0%)
build/block-library/editor.css 11.2 kB +2 B (0%)
build/block-library/index.min.js 192 kB +179 B (0%)
build/components/index.min.js 202 kB -4 B (0%)
build/edit-post/index.min.js 31.7 kB -26 B (0%)
build/edit-site/index.min.js 57.8 kB +8 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 982 B
build/annotations/index.min.js 2.76 kB
build/api-fetch/index.min.js 2.26 kB
build/autop/index.min.js 2.14 kB
build/blob/index.min.js 475 B
build/block-directory/index.min.js 7.09 kB
build/block-directory/style-rtl.css 990 B
build/block-directory/style.css 991 B
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 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 84 B
build/block-library/blocks/avatar/style.css 84 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 482 B
build/block-library/blocks/button/editor.css 482 B
build/block-library/blocks/button/style-rtl.css 523 B
build/block-library/blocks/button/style.css 523 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 84 B
build/block-library/blocks/categories/editor.css 83 B
build/block-library/blocks/categories/style-rtl.css 100 B
build/block-library/blocks/categories/style.css 100 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 406 B
build/block-library/blocks/columns/style.css 406 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 187 B
build/block-library/blocks/comment-template/style.css 185 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 834 B
build/block-library/blocks/comments/editor.css 832 B
build/block-library/blocks/comments/style-rtl.css 632 B
build/block-library/blocks/comments/style.css 630 B
build/block-library/blocks/cover/editor-rtl.css 612 B
build/block-library/blocks/cover/editor.css 613 B
build/block-library/blocks/cover/style-rtl.css 1.57 kB
build/block-library/blocks/cover/style.css 1.55 kB
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 300 B
build/block-library/blocks/file/editor.css 300 B
build/block-library/blocks/file/style-rtl.css 253 B
build/block-library/blocks/file/style.css 254 B
build/block-library/blocks/file/view.min.js 346 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 948 B
build/block-library/blocks/gallery/editor.css 950 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 394 B
build/block-library/blocks/group/editor.css 394 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 327 B
build/block-library/blocks/html/editor.css 329 B
build/block-library/blocks/image/style-rtl.css 627 B
build/block-library/blocks/image/style.css 630 B
build/block-library/blocks/image/theme-rtl.css 126 B
build/block-library/blocks/image/theme.css 126 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 213 B
build/block-library/blocks/latest-posts/editor.css 212 B
build/block-library/blocks/latest-posts/style-rtl.css 463 B
build/block-library/blocks/latest-posts/style.css 462 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 507 B
build/block-library/blocks/media-text/style.css 505 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 705 B
build/block-library/blocks/navigation-link/editor.css 703 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.02 kB
build/block-library/blocks/navigation/editor.css 2.03 kB
build/block-library/blocks/navigation/style-rtl.css 2.17 kB
build/block-library/blocks/navigation/style.css 2.16 kB
build/block-library/blocks/navigation/view-modal.min.js 2.78 kB
build/block-library/blocks/navigation/view.min.js 443 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 363 B
build/block-library/blocks/page-list/editor.css 363 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 174 B
build/block-library/blocks/paragraph/editor.css 174 B
build/block-library/blocks/paragraph/style-rtl.css 279 B
build/block-library/blocks/paragraph/style.css 281 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 493 B
build/block-library/blocks/post-comments-form/style.css 493 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 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 586 B
build/block-library/blocks/post-featured-image/editor.css 584 B
build/block-library/blocks/post-featured-image/style-rtl.css 315 B
build/block-library/blocks/post-featured-image/style.css 315 B
build/block-library/blocks/post-navigation-link/style-rtl.css 153 B
build/block-library/blocks/post-navigation-link/style.css 153 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 282 B
build/block-library/blocks/post-template/style.css 282 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-title/style-rtl.css 100 B
build/block-library/blocks/post-title/style.css 100 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 135 B
build/block-library/blocks/pullquote/editor.css 135 B
build/block-library/blocks/pullquote/style-rtl.css 326 B
build/block-library/blocks/pullquote/style.css 325 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 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 282 B
build/block-library/blocks/query-pagination/style.css 278 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 439 B
build/block-library/blocks/query/editor.css 439 B
build/block-library/blocks/quote/style-rtl.css 213 B
build/block-library/blocks/quote/style.css 213 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 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 409 B
build/block-library/blocks/search/style.css 406 B
build/block-library/blocks/search/theme-rtl.css 114 B
build/block-library/blocks/search/theme.css 114 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 464 B
build/block-library/blocks/shortcode/editor.css 464 B
build/block-library/blocks/site-logo/editor-rtl.css 490 B
build/block-library/blocks/site-logo/editor.css 490 B
build/block-library/blocks/site-logo/style-rtl.css 203 B
build/block-library/blocks/site-logo/style.css 203 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 674 B
build/block-library/blocks/social-links/editor.css 673 B
build/block-library/blocks/social-links/style-rtl.css 1.4 kB
build/block-library/blocks/social-links/style.css 1.39 kB
build/block-library/blocks/spacer/editor-rtl.css 322 B
build/block-library/blocks/spacer/editor.css 322 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 494 B
build/block-library/blocks/table/editor.css 494 B
build/block-library/blocks/table/style-rtl.css 611 B
build/block-library/blocks/table/style.css 609 B
build/block-library/blocks/table/theme-rtl.css 190 B
build/block-library/blocks/table/theme.css 190 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 235 B
build/block-library/blocks/template-part/editor.css 235 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/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 691 B
build/block-library/blocks/video/editor.css 694 B
build/block-library/blocks/video/style-rtl.css 174 B
build/block-library/blocks/video/style.css 174 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 162 B
build/block-library/classic.css 162 B
build/block-library/common-rtl.css 1.02 kB
build/block-library/common.css 1.02 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 478 B
build/block-library/reset.css 478 B
build/block-library/style-rtl.css 12.3 kB
build/block-library/style.css 12.3 kB
build/block-library/theme-rtl.css 719 B
build/block-library/theme.css 722 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.83 kB
build/blocks/index.min.js 49.8 kB
build/components/style-rtl.css 11.3 kB
build/components/style.css 11.3 kB
build/compose/index.min.js 12.2 kB
build/core-data/index.min.js 15.5 kB
build/customize-widgets/index.min.js 11.3 kB
build/customize-widgets/style-rtl.css 1.38 kB
build/customize-widgets/style.css 1.38 kB
build/data-controls/index.min.js 653 B
build/data/index.min.js 8.08 kB
build/date/index.min.js 32.1 kB
build/deprecated/index.min.js 507 B
build/dom-ready/index.min.js 324 B
build/dom/index.min.js 4.7 kB
build/edit-navigation/index.min.js 16.1 kB
build/edit-navigation/style-rtl.css 3.99 kB
build/edit-navigation/style.css 4 kB
build/edit-post/classic-rtl.css 546 B
build/edit-post/classic.css 547 B
build/edit-post/style-rtl.css 7.13 kB
build/edit-post/style.css 7.13 kB
build/edit-site/style-rtl.css 8.37 kB
build/edit-site/style.css 8.35 kB
build/edit-widgets/index.min.js 16.7 kB
build/edit-widgets/style-rtl.css 4.34 kB
build/edit-widgets/style.css 4.34 kB
build/editor/index.min.js 41.7 kB
build/editor/style-rtl.css 3.62 kB
build/editor/style.css 3.61 kB
build/element/index.min.js 4.68 kB
build/escape-html/index.min.js 537 B
build/experiments/index.min.js 868 B
build/format-library/index.min.js 6.95 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.64 kB
build/html-entities/index.min.js 448 B
build/i18n/index.min.js 3.77 kB
build/is-shallow-equal/index.min.js 527 B
build/keyboard-shortcuts/index.min.js 1.78 kB
build/keycodes/index.min.js 1.83 kB
build/list-reusable-blocks/index.min.js 2.13 kB
build/list-reusable-blocks/style-rtl.css 835 B
build/list-reusable-blocks/style.css 835 B
build/media-utils/index.min.js 2.93 kB
build/notices/index.min.js 963 B
build/nux/index.min.js 2.06 kB
build/nux/style-rtl.css 732 B
build/nux/style.css 728 B
build/plugins/index.min.js 1.94 kB
build/preferences-persistence/index.min.js 2.22 kB
build/preferences/index.min.js 1.33 kB
build/primitives/index.min.js 933 B
build/priority-queue/index.min.js 1.58 kB
build/react-i18n/index.min.js 696 B
build/react-refresh-entry/index.min.js 8.44 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.74 kB
build/reusable-blocks/index.min.js 2.21 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 10.6 kB
build/server-side-render/index.min.js 1.77 kB
build/shortcode/index.min.js 1.53 kB
build/style-engine/index.min.js 1.46 kB
build/token-list/index.min.js 644 B
build/url/index.min.js 3.61 kB
build/vendors/inert-polyfill.min.js 2.48 kB
build/vendors/react-dom.min.js 38.5 kB
build/vendors/react.min.js 4.34 kB
build/viewport/index.min.js 1.08 kB
build/warning/index.min.js 268 B
build/widgets/index.min.js 7.21 kB
build/widgets/style-rtl.css 1.18 kB
build/widgets/style.css 1.19 kB
build/wordcount/index.min.js 1.06 kB

compressed-size-action

@jasmussen
Copy link
Contributor

Very nice! This is really close already:

before

  • I click the caption button and focus is set on the caption field, while the button is grayed
  • I type a caption, and the button disappears
  • I delete the caption and the button is back

Solid, and I think the icon actually works okay in this context.

One issue, some extra space under the image when focused is now becoming visible:

Screenshot 2022-10-14 at 08 57 33

This is not present in trunk, because the caption field masks it:

Screenshot 2022-10-14 at 08 57 50

This appears to be caused by the resizable box stuff. Or more specifically, by the resizable-box component being inline-block:

inline-block

Can we remove that? What side effects might it have? Why was it there in the first place, do you know?

@ntsekouras
Copy link
Contributor Author

One issue, some extra space under the image when focused is now becoming visible:
Can we remove that? What side effects might it have? Why was it there in the first place, do you know?

I changed the display value to table here: 96173c0 and I don't see any regression. This was to prevent this issue. I'd like a sanity check maybe from @mirka or @ciampo .

@jasmussen
Copy link
Contributor

I can confirm the table display fixes the focus style:

Screenshot 2022-10-14 at 12 45 17

I would echo the need for a sanity check. display: table; has a tendency to be a bit weird.

@alexstine alexstine added the Needs Accessibility Feedback Need input from accessibility label Oct 14, 2022
@alexstine
Copy link
Contributor

@ntsekouras Can you explain a little more about what this is actually doing? I do not see a button to add a caption to an image block that does not have a caption.

@ntsekouras
Copy link
Contributor Author

ntsekouras commented Oct 14, 2022

@ntsekouras Can you explain a little more about what this is actually doing? I do not see a button to add a caption to an image block that does not have a caption.

@alexstine currently if an image block doesn't have a caption and you select it, it will render a RichText to add the caption. In this PR you have to select the image block and a button with Add caption label is added in the image's block toolbar. The RichtText will be rendered only if you click this toolbar button. If the image has a caption, the toolbar button is not rendered.

If you have any issues with the button in the PR, could you share a screenshot?

@ciampo
Copy link
Contributor

ciampo commented Oct 14, 2022

I changed the display value to table here: 96173c0 and I don't see any regression. This was to prevent this issue. I'd like a sanity check maybe from @mirka or @ciampo .

Yup, that gap is indeed caused by the inline-block display value, which causes the browser to add white space in between elements (see a more in-depth explanation).

Changing display from inline-block to table (or block) should do the trick. Alternative approaches may also be to:

  • use floats (although I wouldn't apply it here)
  • use display: flex on the parent (although I'm not sure that would work, I'm not familiar with how the image block's layout is structured)
  • set font-size: 0 on the parent (a bit hacky, but should do it)

Ultimately, your current approach should work well (at most, you could consider updating from table to block), although I would do some thorough testing on the alignment given that the inline-block styles were in place to fix this issue.

One more question — have you considered removing that display style override altogether? It could be possible that the default display value already works for this scenario.

@ntsekouras
Copy link
Contributor Author

Ultimately, your current approach should work well (at most, you could consider updating from table to block), although I would do some thorough testing on the alignment given that the inline-block styles were in place to fix #22693

Thanks for chiming in @ciampo . display: block doesn't work in this case as it fills the available space and moves the handlers to the edges. From your comment I get that the table is fine.

@ciampo
Copy link
Contributor

ciampo commented Oct 14, 2022

display: block doesn't work in this case as it fills the available space and moves the handlers to the edges.

Interesting, I gave this PR a quick spin and I couldn't replicate this behaviour:

Kapture.2022-10-14.at.17.31.47.mp4

Maybe I'm not testing for the right thing?

@ntsekouras
Copy link
Contributor Author

Hm.. Maybe it also has to do with the image width? 🤔

Screen.Recording.2022-10-14.at.6.36.30.PM.mov

@jasmussen
Copy link
Contributor

Ah that makes sense, yes, block goes edge go edge, table and inline-block do not. Can you try inline-flex, just to see if that does anything? I don't think it does, but just to vet it.

@ntsekouras
Copy link
Contributor Author

Ah that makes sense, yes, block goes edge go edge, table and inline-block do not. Can you try inline-flex, just to see if that does anything? I don't think it does, but just to vet it.

I had tried all and only table seems to worked well. I didn't want to make changes to parents(with flex) or the font-size trick.

@ciampo
Copy link
Contributor

ciampo commented Oct 14, 2022

Hm.. Maybe it also has to do with the image width? 🤔

That's exactly it! Good finding!

I guess we can then leave the display: table, but we should probably add an inline comment, something like:

// Using "display: table" because:
// - it visually hides empty white space in between elements
// - it allows the element to be as wide as its contents (instead of 100% width, as it would be with `display: block`)

Side note: this behaviour could also be achieved with width: fit-content, but not really in this case since the width property is already being applied through inline styles.

@alexstine
Copy link
Contributor

@ntsekouras

If you have any issues with the button in the PR, could you share a screenshot?

That would not help anyway. I am testing the PR for accessibility so chances are what you see visually is different than what is happening for me.

After checking out and building your branch, selecting the image block places focus in the caption field automatically and I do not see a button anywhere in the block toolbar to add a caption.

I need instructions that tell me how to find this with the keyboard only. If none can be provided, I guess that answers the question about accessibility and further work will be needed. 👍

Thoughts?

Thanks.

@ntsekouras
Copy link
Contributor Author

After checking out and building your branch, selecting the image block places focus in the caption field automatically

@alexstine that shouldn't happen and it didn't happen for anyone else testing this PR, as this is the old behavior.. 🤔 In this PR if there is no caption we don't even render the RichText input.. Can you try once more to checkout the branch and retest?

@alexstine
Copy link
Contributor

@ntsekouras It should be a toggle button. This should work out.

  • Button text set to Caption.
  • Toggle aria-pressed based on if caption field is showing or not.

My problem with this approach of simply emptying the field is this is an unknown to users. To follow the same UX, it only makes sense that you should be able to select a button to undo the action that added the field.

Thanks.

@ntsekouras ntsekouras force-pushed the add/image-caption-toolbar-item branch from c5051b5 to 79caffe Compare October 18, 2022 07:07
@ntsekouras
Copy link
Contributor Author

@ntsekouras It should be a toggle button.

@alexstine I changed back to toggle button.

@ntsekouras ntsekouras force-pushed the add/image-caption-toolbar-item branch from a525621 to 69a7db8 Compare October 18, 2022 07:14
@jameskoster
Copy link
Contributor

@alexstine if pressing backspace removed the caption and returned focus to the "Add caption" button, could that work? I appreciate that is still 'hidden', but it's a familiar pattern across the editor (to remove empty paragraphs etc).

@alexstine
Copy link
Contributor

@jameskoster Not until we actually make this reliable for screen reader users. Still not understanding what the problem is. We want a PR to add a button to add a caption, but cannot have the same to remove a caption. We have options to remove blocks even though backspace will do it. This is for the sake of simplicity and not changing the UI based on conditionals that end-users will not understand. This is a bad problem to have for accessibility because it will not be apparent to screen reader users until they go looking back for that button which is not a problem a sighted person would have.

As far as reliability goes, there is still a lot of focus loss happening in these custom interactions. It is not stable enough at this point to support it and the work to get it there will be way out of scope of this PR.

Thanks.

Copy link
Contributor

@alexstine alexstine left a comment

Choose a reason for hiding this comment

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

Looks good.

@ntsekouras ntsekouras merged commit b4d463e into trunk Oct 19, 2022
@ntsekouras ntsekouras deleted the add/image-caption-toolbar-item branch October 19, 2022 08:03
@github-actions github-actions bot added this to the Gutenberg 14.4 milestone Oct 19, 2022
@youknowriad
Copy link
Contributor

Any plans to do the same for all blocks with captions and citations?

@ntsekouras
Copy link
Contributor Author

Any plans to do the same for all blocks with captions and citations?

Yes, I'll do for Audio, and Video first(caption). I'll have to check about citation..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Image Affects the Image Block Needs Accessibility Feedback Need input from accessibility Needs User Documentation Needs new user documentation [Package] Block library /packages/block-library
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Layout jumps when selecting an image
8 participants