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

[RNMobile] Enable Third-Party Blocks to Set Aspect Ratio of Image via Inner Blocks #35089

Conversation

SiobhyB
Copy link
Contributor

@SiobhyB SiobhyB commented Sep 23, 2021

Description

The React Native version of Jetpack's Tiled Gallery block will be using the Inner Block API to display images in a gallery. As part of this project, we need to change the aspect ratio of the images that are displayed.

It is likely that other third-party blocks will face similar use cases in the future if they're pulling in the image block as an inner block. With that in mind, and to help achieve our end goal, this PR introduces some changes that will enable any third-party block to define the aspect ratio of an image when used as an inner block.

Note, the goal behind this PR isn't to introduce Jetpack-specific code, but rather to introduce generic changes that will hopefully be useful or re-usable for other third-party blocks. We have tried to be mindful against introducing anything that is specific only to Jetpack to the Gutenberg codebase.

Types of changes

Outlined below are specifics around the two main changes that this PR includes. They are the introduction of a new context, fixedHeight, to prevent an overlap with the core Gallery block's set height and a tweak to the image block's shapeStyle prop.

Address Conflict with Core Gallery Block's Style

  • The core Gallery block introduced two block contexts in order to get around the challenge of editing/styling the image block as an inner block. Those are allowResize and imageCrop.
  • The imageCrop context translates to resizeMode='cover', which is what we need to use in order to change the inner image's aspect ratios.
  • The use of imageCrop, meant the image block's hasImageContext variable began to evaluate as true for the Tiled Gallery block. This then meant the fixedHeight style was being applied to it, which prevented the aspect ratio of images from being changed.
  • With the above in mind, this PR introduces a new fixedHeight context to the Gallery block. As explained here, this change prevents styles that are specific to the core Gallery block from impacting any block that uses the imageCrop context.

Allow Third-Party Styles to be Passed

  • The image block's shapeStyle prop was updated to accept not only a string, but also full styles. This is to allow third-party blocks, the Tiled Gallery block in this case, to pass styles without needing to make edits directly to the image block's core files.

How has this been tested?

As this PR is part of a wider effort to port the Jetpack Tiled Gallery block to Gutenberg Mobile, steps to specifically test the Jetpack block can be found in the Jetpack repository at Automattic/jetpack#21166, with the central Gutenberg Mobile PR at wordpress-mobile/gutenberg-mobile#4017.

For this specific PR, on the Gutenberg side, the following has been tested in the iOS and Android apps, with this branch checked out from view:

  • Ensure the images in the Gallery block are a set height and that there are no regressions.
  • Add an Image block and ensure the image displays at the correct size. Play around with the block's various settings, including the round style, and ensure there are no regressions.

Screenshots

These screenshots show our specific use cases for using contexts, which is to remove and style parts of the image block when used as an inner block. You'll see we were able to use contexts to make the images appear as squares:

Before After

Checklist:

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

This selector will be used to make images in the editor look 'square' within the Tiled Gallery block.

The CSS will be iterated on in future commits.
@SiobhyB SiobhyB changed the base branch from rnmobile/add/tiled-gallery-block to trunk September 26, 2021 08:41
@SiobhyB SiobhyB changed the base branch from trunk to rnmobile/add/tiled-gallery-block September 26, 2021 08:42
@SiobhyB SiobhyB changed the base branch from rnmobile/add/tiled-gallery-block to trunk September 26, 2021 08:42
@SiobhyB SiobhyB changed the base branch from trunk to rnmobile/add/tiled-gallery-block September 26, 2021 08:43
@SiobhyB SiobhyB changed the base branch from rnmobile/add/tiled-gallery-block to trunk September 26, 2021 08:47
@SiobhyB SiobhyB changed the base branch from trunk to rnmobile/add/tiled-gallery-block September 26, 2021 11:50
@SiobhyB SiobhyB changed the base branch from rnmobile/add/tiled-gallery-block to trunk September 27, 2021 09:27
@SiobhyB SiobhyB changed the base branch from trunk to rnmobile/add/tiled-gallery-block September 27, 2021 09:35
@SiobhyB SiobhyB changed the base branch from rnmobile/add/tiled-gallery-block to trunk September 27, 2021 09:41
Siobhan and others added 2 commits September 27, 2021 10:42
As the image block's caption component isn't part of the Tiled Gallery's design, this commit sets up the necessary code to hide it from view.

This is done through the use of a "hideImageCaption" context, which lives under a new "blockStyles" object. It should be possible to further utilise this object for future styling of inner blocks.
@github-actions
Copy link

github-actions bot commented Sep 27, 2021

Size Change: +2.31 kB (0%)

Total Size: 1.07 MB

Filename Size Change
build/block-editor/index.min.js 134 kB +579 B (0%)
build/block-editor/style-rtl.css 13.9 kB +72 B (+1%)
build/block-editor/style.css 13.9 kB +72 B (+1%)
build/block-library/blocks/navigation/style-rtl.css 1.62 kB +137 B (+9%) 🔍
build/block-library/blocks/navigation/style.css 1.61 kB +141 B (+10%) ⚠️
build/block-library/blocks/post-content/editor-rtl.css 0 B -138 B (removed) 🏆
build/block-library/blocks/post-content/editor.css 0 B -138 B (removed) 🏆
build/block-library/blocks/post-featured-image/style-rtl.css 146 B +3 B (+2%)
build/block-library/blocks/post-featured-image/style.css 146 B +3 B (+2%)
build/block-library/blocks/post-template/style-rtl.css 391 B +13 B (+3%)
build/block-library/blocks/post-template/style.css 392 B +13 B (+3%)
build/block-library/editor-rtl.css 9.72 kB -39 B (0%)
build/block-library/editor.css 9.71 kB -38 B (0%)
build/block-library/index.min.js 146 kB -132 B (0%)
build/block-library/style-rtl.css 10.4 kB +149 B (+1%)
build/block-library/style.css 10.4 kB +151 B (+1%)
build/blocks/index.min.js 45.7 kB +8 B (0%)
build/components/index.min.js 214 kB +9 B (0%)
build/core-data/index.min.js 12.4 kB +53 B (0%)
build/customize-widgets/index.min.js 11.1 kB +2 B (0%)
build/edit-navigation/index.min.js 15.3 kB +10 B (0%)
build/edit-navigation/style-rtl.css 3.74 kB +31 B (+1%)
build/edit-navigation/style.css 3.74 kB +36 B (+1%)
build/edit-post/index.min.js 29.2 kB +216 B (+1%)
build/edit-site/index.min.js 29 kB +614 B (+2%)
build/edit-site/style-rtl.css 5.43 kB +68 B (+1%)
build/edit-site/style.css 5.43 kB +70 B (+1%)
build/edit-widgets/index.min.js 15.7 kB -1 B (0%)
build/editor/index.min.js 37.5 kB +101 B (0%)
build/format-library/index.min.js 5.93 kB +246 B (+4%)
build/widgets/index.min.js 7.11 kB +3 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 931 B
build/admin-manifest/index.min.js 1.09 kB
build/annotations/index.min.js 2.7 kB
build/api-fetch/index.min.js 2.21 kB
build/autop/index.min.js 2.08 kB
build/blob/index.min.js 459 B
build/block-directory/index.min.js 6.19 kB
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/default-editor-styles-rtl.css 378 B
build/block-editor/default-editor-styles.css 378 B
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 65 B
build/block-library/blocks/archives/style.css 65 B
build/block-library/blocks/audio/editor-rtl.css 58 B
build/block-library/blocks/audio/editor.css 58 B
build/block-library/blocks/audio/style-rtl.css 111 B
build/block-library/blocks/audio/style.css 111 B
build/block-library/blocks/audio/theme-rtl.css 125 B
build/block-library/blocks/audio/theme.css 125 B
build/block-library/blocks/block/editor-rtl.css 161 B
build/block-library/blocks/block/editor.css 161 B
build/block-library/blocks/button/editor-rtl.css 474 B
build/block-library/blocks/button/editor.css 474 B
build/block-library/blocks/button/style-rtl.css 600 B
build/block-library/blocks/button/style.css 600 B
build/block-library/blocks/buttons/editor-rtl.css 315 B
build/block-library/blocks/buttons/editor.css 315 B
build/block-library/blocks/buttons/style-rtl.css 370 B
build/block-library/blocks/buttons/style.css 370 B
build/block-library/blocks/calendar/style-rtl.css 207 B
build/block-library/blocks/calendar/style.css 207 B
build/block-library/blocks/categories/editor-rtl.css 84 B
build/block-library/blocks/categories/editor.css 83 B
build/block-library/blocks/categories/style-rtl.css 79 B
build/block-library/blocks/categories/style.css 79 B
build/block-library/blocks/code/style-rtl.css 90 B
build/block-library/blocks/code/style.css 90 B
build/block-library/blocks/code/theme-rtl.css 131 B
build/block-library/blocks/code/theme.css 131 B
build/block-library/blocks/columns/editor-rtl.css 206 B
build/block-library/blocks/columns/editor.css 205 B
build/block-library/blocks/columns/style-rtl.css 497 B
build/block-library/blocks/columns/style.css 496 B
build/block-library/blocks/cover/editor-rtl.css 666 B
build/block-library/blocks/cover/editor.css 670 B
build/block-library/blocks/cover/style-rtl.css 1.23 kB
build/block-library/blocks/cover/style.css 1.23 kB
build/block-library/blocks/embed/editor-rtl.css 488 B
build/block-library/blocks/embed/editor.css 488 B
build/block-library/blocks/embed/style-rtl.css 417 B
build/block-library/blocks/embed/style.css 417 B
build/block-library/blocks/embed/theme-rtl.css 124 B
build/block-library/blocks/embed/theme.css 124 B
build/block-library/blocks/file/editor-rtl.css 300 B
build/block-library/blocks/file/editor.css 300 B
build/block-library/blocks/file/style-rtl.css 255 B
build/block-library/blocks/file/style.css 255 B
build/block-library/blocks/file/view.min.js 322 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB
build/block-library/blocks/freeform/editor.css 2.44 kB
build/block-library/blocks/gallery/editor-rtl.css 977 B
build/block-library/blocks/gallery/editor.css 982 B
build/block-library/blocks/gallery/style-rtl.css 1.6 kB
build/block-library/blocks/gallery/style.css 1.59 kB
build/block-library/blocks/gallery/theme-rtl.css 122 B
build/block-library/blocks/gallery/theme.css 122 B
build/block-library/blocks/group/editor-rtl.css 159 B
build/block-library/blocks/group/editor.css 159 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 114 B
build/block-library/blocks/heading/style.css 114 B
build/block-library/blocks/home-link/style-rtl.css 247 B
build/block-library/blocks/home-link/style.css 247 B
build/block-library/blocks/html/editor-rtl.css 332 B
build/block-library/blocks/html/editor.css 333 B
build/block-library/blocks/image/editor-rtl.css 728 B
build/block-library/blocks/image/editor.css 728 B
build/block-library/blocks/image/style-rtl.css 482 B
build/block-library/blocks/image/style.css 487 B
build/block-library/blocks/image/theme-rtl.css 124 B
build/block-library/blocks/image/theme.css 124 B
build/block-library/blocks/latest-comments/style-rtl.css 284 B
build/block-library/blocks/latest-comments/style.css 284 B
build/block-library/blocks/latest-posts/editor-rtl.css 137 B
build/block-library/blocks/latest-posts/editor.css 137 B
build/block-library/blocks/latest-posts/style-rtl.css 528 B
build/block-library/blocks/latest-posts/style.css 527 B
build/block-library/blocks/list/style-rtl.css 94 B
build/block-library/blocks/list/style.css 94 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 488 B
build/block-library/blocks/media-text/style.css 485 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 568 B
build/block-library/blocks/navigation-link/editor.css 570 B
build/block-library/blocks/navigation-link/style-rtl.css 94 B
build/block-library/blocks/navigation-link/style.css 94 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 300 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation-submenu/style-rtl.css 195 B
build/block-library/blocks/navigation-submenu/style.css 195 B
build/block-library/blocks/navigation-submenu/view.min.js 343 B
build/block-library/blocks/navigation/editor-rtl.css 1.72 kB
build/block-library/blocks/navigation/editor.css 1.72 kB
build/block-library/blocks/navigation/view.min.js 2.74 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 198 B
build/block-library/blocks/page-list/style.css 198 B
build/block-library/blocks/paragraph/editor-rtl.css 157 B
build/block-library/blocks/paragraph/editor.css 157 B
build/block-library/blocks/paragraph/style-rtl.css 273 B
build/block-library/blocks/paragraph/style.css 273 B
build/block-library/blocks/post-author/editor-rtl.css 210 B
build/block-library/blocks/post-author/editor.css 210 B
build/block-library/blocks/post-author/style-rtl.css 182 B
build/block-library/blocks/post-author/style.css 181 B
build/block-library/blocks/post-comments-form/style-rtl.css 140 B
build/block-library/blocks/post-comments-form/style.css 140 B
build/block-library/blocks/post-comments/style-rtl.css 360 B
build/block-library/blocks/post-comments/style.css 359 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B
build/block-library/blocks/post-excerpt/editor.css 73 B
build/block-library/blocks/post-excerpt/style-rtl.css 69 B
build/block-library/blocks/post-excerpt/style.css 69 B
build/block-library/blocks/post-featured-image/editor-rtl.css 398 B
build/block-library/blocks/post-featured-image/editor.css 398 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-terms/style-rtl.css 73 B
build/block-library/blocks/post-terms/style.css 73 B
build/block-library/blocks/post-title/style-rtl.css 60 B
build/block-library/blocks/post-title/style.css 60 B
build/block-library/blocks/preformatted/style-rtl.css 103 B
build/block-library/blocks/preformatted/style.css 103 B
build/block-library/blocks/pullquote/editor-rtl.css 198 B
build/block-library/blocks/pullquote/editor.css 198 B
build/block-library/blocks/pullquote/style-rtl.css 378 B
build/block-library/blocks/pullquote/style.css 378 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 262 B
build/block-library/blocks/query-pagination/editor.css 255 B
build/block-library/blocks/query-pagination/style-rtl.css 234 B
build/block-library/blocks/query-pagination/style.css 231 B
build/block-library/blocks/query-title/editor-rtl.css 85 B
build/block-library/blocks/query-title/editor.css 85 B
build/block-library/blocks/query/editor-rtl.css 131 B
build/block-library/blocks/query/editor.css 132 B
build/block-library/blocks/quote/style-rtl.css 187 B
build/block-library/blocks/quote/style.css 187 B
build/block-library/blocks/quote/theme-rtl.css 220 B
build/block-library/blocks/quote/theme.css 222 B
build/block-library/blocks/rss/editor-rtl.css 202 B
build/block-library/blocks/rss/editor.css 204 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 165 B
build/block-library/blocks/search/editor.css 165 B
build/block-library/blocks/search/style-rtl.css 374 B
build/block-library/blocks/search/style.css 375 B
build/block-library/blocks/search/theme-rtl.css 64 B
build/block-library/blocks/search/theme.css 64 B
build/block-library/blocks/separator/editor-rtl.css 99 B
build/block-library/blocks/separator/editor.css 99 B
build/block-library/blocks/separator/style-rtl.css 250 B
build/block-library/blocks/separator/style.css 250 B
build/block-library/blocks/separator/theme-rtl.css 172 B
build/block-library/blocks/separator/theme.css 172 B
build/block-library/blocks/shortcode/editor-rtl.css 474 B
build/block-library/blocks/shortcode/editor.css 474 B
build/block-library/blocks/site-logo/editor-rtl.css 462 B
build/block-library/blocks/site-logo/editor.css 464 B
build/block-library/blocks/site-logo/style-rtl.css 153 B
build/block-library/blocks/site-logo/style.css 153 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 84 B
build/block-library/blocks/site-title/editor.css 84 B
build/block-library/blocks/social-link/editor-rtl.css 165 B
build/block-library/blocks/social-link/editor.css 165 B
build/block-library/blocks/social-links/editor-rtl.css 812 B
build/block-library/blocks/social-links/editor.css 811 B
build/block-library/blocks/social-links/style-rtl.css 1.3 kB
build/block-library/blocks/social-links/style.css 1.3 kB
build/block-library/blocks/spacer/editor-rtl.css 307 B
build/block-library/blocks/spacer/editor.css 307 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 471 B
build/block-library/blocks/table/editor.css 472 B
build/block-library/blocks/table/style-rtl.css 481 B
build/block-library/blocks/table/style.css 481 B
build/block-library/blocks/table/theme-rtl.css 188 B
build/block-library/blocks/table/theme.css 188 B
build/block-library/blocks/tag-cloud/style-rtl.css 146 B
build/block-library/blocks/tag-cloud/style.css 146 B
build/block-library/blocks/template-part/editor-rtl.css 636 B
build/block-library/blocks/template-part/editor.css 635 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/term-description/editor-rtl.css 90 B
build/block-library/blocks/term-description/editor.css 90 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 87 B
build/block-library/blocks/verse/style.css 87 B
build/block-library/blocks/video/editor-rtl.css 571 B
build/block-library/blocks/video/editor.css 572 B
build/block-library/blocks/video/style-rtl.css 173 B
build/block-library/blocks/video/style.css 173 B
build/block-library/blocks/video/theme-rtl.css 124 B
build/block-library/blocks/video/theme.css 124 B
build/block-library/common-rtl.css 853 B
build/block-library/common.css 849 B
build/block-library/reset-rtl.css 536 B
build/block-library/reset.css 536 B
build/block-library/theme-rtl.css 665 B
build/block-library/theme.css 669 B
build/block-serialization-default-parser/index.min.js 1.09 kB
build/block-serialization-spec-parser/index.min.js 2.79 kB
build/components/style-rtl.css 15.9 kB
build/components/style.css 15.9 kB
build/compose/index.min.js 10.3 kB
build/customize-widgets/style-rtl.css 1.5 kB
build/customize-widgets/style.css 1.49 kB
build/data-controls/index.min.js 614 B
build/data/index.min.js 7.1 kB
build/date/index.min.js 31.5 kB
build/deprecated/index.min.js 428 B
build/dom-ready/index.min.js 304 B
build/dom/index.min.js 4.45 kB
build/edit-post/classic-rtl.css 492 B
build/edit-post/classic.css 494 B
build/edit-post/style-rtl.css 7.19 kB
build/edit-post/style.css 7.18 kB
build/edit-widgets/style-rtl.css 4.1 kB
build/edit-widgets/style.css 4.1 kB
build/editor/style-rtl.css 3.76 kB
build/editor/style.css 3.75 kB
build/element/index.min.js 3.17 kB
build/escape-html/index.min.js 517 B
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.55 kB
build/html-entities/index.min.js 424 B
build/i18n/index.min.js 3.6 kB
build/is-shallow-equal/index.min.js 501 B
build/keyboard-shortcuts/index.min.js 1.72 kB
build/keycodes/index.min.js 1.3 kB
build/list-reusable-blocks/index.min.js 1.85 kB
build/list-reusable-blocks/style-rtl.css 838 B
build/list-reusable-blocks/style.css 838 B
build/media-utils/index.min.js 2.92 kB
build/notices/index.min.js 845 B
build/nux/index.min.js 2.03 kB
build/nux/style-rtl.css 747 B
build/nux/style.css 743 B
build/plugins/index.min.js 1.83 kB
build/primitives/index.min.js 921 B
build/priority-queue/index.min.js 582 B
build/react-i18n/index.min.js 671 B
build/redux-routine/index.min.js 2.63 kB
build/reusable-blocks/index.min.js 2.28 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 10.6 kB
build/server-side-render/index.min.js 1.5 kB
build/shortcode/index.min.js 1.48 kB
build/token-list/index.min.js 562 B
build/url/index.min.js 1.74 kB
build/viewport/index.min.js 1.02 kB
build/warning/index.min.js 248 B
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.04 kB

compressed-size-action

Siobhan added 7 commits September 27, 2021 11:07
With this new commit, the purpose of the new object is clarifyied by tweaking its name from "blockStyles" to "imageBlockStyles".
At the moment, a fixed height is applied to the image block if context is detected. This not only effects the standard Gallery block (intended) but also the Tiled Gallery Block (not intended).

With this commit, a new "fixedHeight" context is added to only set a fixed height if it's explicitly set.

This is necessary as the Tiled Gallery block will need varying heights as part of its design.
In order to change the image's shape via a third-party block (such as Jetpack's Tiled Gallery), we need to be able to pass a style to the "shapeStyle" prop.

With this commit, the "shapeStyle" prop is changed to accept both a reference to the image block's classes and a third-party block's styles.

This change means that it's no longer necessary for third-party blocks, like the Tiled Gallery, to set styles directly in the image block's stylesheet. So, this commit also removes the ".is-style-squared" class.
The 'hideImageCaption' and 'fixedHeight' context objects are enabled for the image block in this commit. These objects will be used for the purpose of tweaking the image block's default styles in blocks where it's used i.e. currently, the Gallery block and Jetpack's Tiled Gallery block.
@SiobhyB SiobhyB added Mobile App - i.e. Android or iOS Native mobile impl of the block editor. (Note: used in scripts, ping mobile folks to change) [Block] Image Affects the Image Block [Feature] Nested / Inner Blocks Anything related to the experience of nested/inner blocks inside a larger container, like Group or P labels Sep 27, 2021
};

const imageContainerStyles = [ hasImageContext && styles.fixedHeight ];
const imageContainerStyles = [
Copy link
Contributor Author

Choose a reason for hiding this comment

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

👋 @geriux, I wanted to check in with you, as this PR makes some changes to the ones you introduced with your recent PR in #34957.

The reason for the changes is that hasImageContext was evaluating to true for the Tiled Gallery block, and the block needs to have more flexible heights. You'll see from this PR that I've worked around this by adding a new fixedHeight context object to the Gallery block, so it's only used with that block.

Does that seem like an okay approach to you? Interested to know whether you have other thoughts.

Copy link
Member

Choose a reason for hiding this comment

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

Since the only block that was using context was the Gallery block I used a generic fixedHeight name to avoid limiting the height of the component.

Seeing that now the Tiled block would need this as well, what if we use a name like isGallery instead of fixedHeight for the context?

Do we also need to pass fixedHeight from the Image block?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@geriux, thank you for looking into this! 🙇‍♀️

Seeing that now the Tiled block would need this as well, what if we use a name like isGallery instead of fixedHeight for the context?

Ah, the Tiled Gallery block doesn't need this context. I created it as hasImageContext was evaluating as true for the Tiled Gallery block and applying the fixed height that was needed only for the core Gallery block. This was preventing images from being styled as squares within the Tiled Gallery block. That's what led me to create a context that would only apply to the core Gallery block, not other blocks that are using contexts.

I'm happy to rename it if you want it be clearer that this is for use with the core gallery, maybe something like galleryHasFixedHeight or isCoreGallery?

Do we also need to pass fixedHeight from the Image block?

That's a good point! It doesn't really need to be passed as an additionalImageProp. Do you think a new imageBlockStyles object would make sense here?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I've gone ahead to create an imageBlockStyles object and moved the fixedHeight context to it in ce9ec06.

@SiobhyB SiobhyB marked this pull request as ready for review September 27, 2021 22:17
@SiobhyB SiobhyB requested a review from illusaen September 27, 2021 22:17
@SiobhyB SiobhyB requested review from guarani and geriux September 27, 2021 22:17
@SiobhyB SiobhyB changed the title [RNMobile] Tiled Gallery Block: Aspect Ratio [RNMobile] Tiled Gallery Block: Aspect Ratio for Square Layout Sep 28, 2021
@SiobhyB SiobhyB changed the base branch from trunk to rnmobile/add/tiled-gallery-block September 29, 2021 00:24
@SiobhyB SiobhyB changed the title [RNMobile] Tiled Gallery Block: Aspect Ratio for Square Layout [RNMobile] Tiled Gallery Block: Introduce Contexts to Help Edit Inner Blocks Sep 30, 2021
Siobhan added 2 commits October 4, 2021 10:40
In order to limit this PR's scope, this commit removes the 'hideImageCaption' context. Instead, the focus will be on changes needed for a third-party block to change the image's aspect ratio. The proposal for contexts to hide certain settings in the image block will be moved to #35315.
As mentioned in #35089 (comment), it's not necessary to pass the 'fixedHeight' as an 'additionalImageProps'. This commit moves that context to a new 'imageBlockStyles' object. This object has the potential to be added to in the future.
@SiobhyB SiobhyB changed the title [RNMobile] Tiled Gallery Block: Introduce Contexts to Help Edit Inner Blocks [RNMobile] Tiled Gallery Block: Enable Third-Party Blocks to Set Aspect Ratio of Image via Inner Blocks Oct 4, 2021
@SiobhyB SiobhyB changed the base branch from rnmobile/add/tiled-gallery-block to trunk October 4, 2021 11:25
@SiobhyB SiobhyB changed the base branch from trunk to rnmobile/add/tiled-gallery-block October 4, 2021 11:25
@SiobhyB SiobhyB changed the title [RNMobile] Tiled Gallery Block: Enable Third-Party Blocks to Set Aspect Ratio of Image via Inner Blocks [RNMobile] Enable Third-Party Blocks to Set Aspect Ratio of Image via Inner Blocks Oct 4, 2021
@SiobhyB
Copy link
Contributor Author

SiobhyB commented Oct 4, 2021

Noting that the original scope of this PR has been refined.

The PR originally included the introduction of a new context, hideImageCaption, to the image block. As the introduction of new contexts that are specifically designed with third-party blocks in mind is new and will require further discussion, that aspect is going to be moved to a separate PR.

Now, this PR's scope is limited to changes that are necessary for third-party blocks to change the aspect ratio of images pulled in via inner blocks. It involves a tweak to the image block's shapeStyle prop and a change that prevents a conflict with the core Gallery block's styles.

@SiobhyB
Copy link
Contributor Author

SiobhyB commented Oct 8, 2021

I'm closing this PR as, to make things as clear and easy to follow along with as possible, it's necessary to split it up even further into the following:

  1. A PR to tweak the image block's shapeStyle prop, this can be found at [RNMobile] Image Block: Enable Parent Blocks to Pass Own Styles to Image's 'ShapeStyle' #35420.
  2. A PR to address the conflict with the core Gallery block's styles. This is a WIP at the time of writing.

@SiobhyB SiobhyB closed this Oct 8, 2021
@SiobhyB SiobhyB deleted the rnmobile/add/squared-aspect-ratio branch October 8, 2021 16:26
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 [Feature] Nested / Inner Blocks Anything related to the experience of nested/inner blocks inside a larger container, like Group or P Mobile App - i.e. Android or iOS Native mobile impl of the block editor. (Note: used in scripts, ping mobile folks to change)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants