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

Gallery Block: Support gaps that define column/row gaps to avoid PHP Warning/Fatal #41125

Merged
merged 6 commits into from
May 19, 2022

Conversation

dd32
Copy link
Member

@dd32 dd32 commented May 18, 2022

What?

This PR adds array-notation support to the Gallery Block, as currently that causes a PHP Warning under PHP <8, or a Fatal error in PHP 8.1.

Similar to #39927.

Why?

To resolve a PHP Warning/Fatal error.

This PR may be invalid, if an array for blockGap is not expected here, I'm not sure though of the expectations here. I'm not sure if this is being caused by something specific on WordPress.org as I'm unable to locate where the value is coming from.

Hopefully someone more familiar with the Block Gap implementation can shed some light here?

cc @ryelle since this could actually be Pattern Directory specific, I'm really not sure.

How?

The logic has been copied from the Layout support, where this style of blockGap is handled

// Skip if gap value contains unsupported characters.
// Regex for CSS value borrowed from `safecss_filter_attr`, and used here
// because we only want to match against the value, not the CSS attribute.
if ( is_array( $gap_value ) ) {
foreach ( $gap_value as $key => $value ) {
$gap_value[ $key ] = $value && preg_match( '%[\\\(&=}]|/\*%', $value ) ? null : $value;
}
} else {
$gap_value = $gap_value && preg_match( '%[\\\(&=}]|/\*%', $gap_value ) ? null : $gap_value;
}

if ( is_array( $gap_value ) ) {
$gap_row = isset( $gap_value['top'] ) ? $gap_value['top'] : '0.5em';
$gap_column = isset( $gap_value['left'] ) ? $gap_value['left'] : '0.5em';
$gap_value = $gap_row === $gap_column ? $gap_row : $gap_row . ' ' . $gap_column;
}

Testing Instructions

I'm unsure how to trigger this, a number of Patterns in the WordPress.org Pattern Directory trigger it, but I'm unsure which ones they are as it's occurring during a generic API request.

Screenshots or screencast

Screen Shot 2022-05-18 at 3 45 01 pm

@dd32 dd32 added [Type] Bug An existing feature does not function as intended [Block] Gallery Affects the Gallery Block - used to display groups of images labels May 18, 2022
@dd32 dd32 requested a review from geriux as a code owner May 18, 2022 06:10
@Mamaduka
Copy link
Member

Pinging a few folks you worked on the block gap feature recently.

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 the PR @dd32!

The Gallery block hasn't opted-in to the split row / column support for blockGap, so I'm not quite sure how the users managed to create their patterns (though they could have manually edited the markup to try to achieve the result). Still, it'll be very good to get this fix in, much appreciated!

It's looking mostly good to me, just left a comment where I think we need to use the column value instead of the combined value.

We probably also need to update the JS-equivalent place where this logic is used:

--wp--style--unstable-gallery-gap: ${ gapValue };

We can always look at that separately if you need to get this PR in quickly. I'm just wrapping up for the day now, but happy to take a closer look tomorrow.

For testing, here's the block markup I'm using:

Test gallery block markup
<!-- wp:gallery {"linkTo":"none","className":"columns-2","style":{"spacing":{"blockGap":{"top":"10px","left":"2px"}}}} -->
<figure class="wp-block-gallery has-nested-images columns-default is-cropped columns-2"><!-- wp:image {"id":27,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="http://a-toule-site.local/wp-content/uploads/2022/02/IMG_3878-768x1024.jpg" alt="" class="wp-image-27"/></figure>
<!-- /wp:image -->

<!-- wp:image {"id":26,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="http://a-toule-site.local/wp-content/uploads/2022/02/IMG_3880-768x1024.jpg" alt="" class="wp-image-26"/></figure>
<!-- /wp:image -->

<!-- wp:image {"id":25,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="http://a-toule-site.local/wp-content/uploads/2022/02/IMG_3875-1024x1024.jpg" alt="" class="wp-image-25"/></figure>
<!-- /wp:image --></figure>
<!-- /wp:gallery -->

To manually change split column / row gap in the Gallery block, for anyone testing, you can update this line of the Gallery block's block.json file to the following:

			"blockGap": [ "horizontal", "vertical" ],

And CC: @glendaviesnz for a second opinion 😀

Comment on lines 70 to 76
if ( is_array( $gap_value ) ) {
$gap_row = isset( $gap_value['top'] ) ? $gap_value['top'] : '0.5em';
$gap_column = isset( $gap_value['left'] ) ? $gap_value['left'] : '0.5em';
$gap_value = $gap_row === $gap_column ? $gap_row : $gap_row . ' ' . $gap_column;
}

$style = '.' . $class . '{ --wp--style--unstable-gallery-gap: ' . $gap_value . '; gap: ' . $gap_value . '}';
Copy link
Contributor

Choose a reason for hiding this comment

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

I think it looks like --wp--style--unstable-gallery-gap is used for calculating the width of columns, so this value always needs to be a single column value, not the combined value if I'm reading this correctly. (@glendaviesnz might be able to correct me on this).

I think that might mean that on line 73, we should set that to always be the column value. E.g.

$gap_value = $gap_column;

Copy link
Contributor

Choose a reason for hiding this comment

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

I think it looks like --wp--style--unstable-gallery-gap is used for calculating the width of columns

Yep, this definitely should always be the single column value or the calculation of the column widths will fail.

@ramonjd
Copy link
Member

ramonjd commented May 18, 2022

Thanks for finding this @dd32

I'm not sure if this is being caused by something specific on WordPress.org as I'm unable to locate where the value is coming from.

Just to add context, it is indeed an internal plugin change where we allowed split values for blockGap PR: #37736

The value comes from the block gap editor control, but should only be an array where the block opts into split values as @andrewserong says. So it's not expected. I'll poke around to make sure this is the case.

@ramonjd
Copy link
Member

ramonjd commented May 18, 2022

We probably also need to update the JS-equivalent place where this logic is used:

Good call @andrewserong

This works for me:

--- a/packages/block-library/src/gallery/gap-styles.js
+++ b/packages/block-library/src/gallery/gap-styles.js
@@ -8,9 +8,12 @@ export default function GapStyles( { blockGap, clientId } ) {
        const styleElement = useContext( BlockList.__unstableElementContext );
        // --gallery-block--gutter-size is deprecated. --wp--style--gallery-gap-default should be used by themes that want to set a default
        // gap on the gallery.
-       const gapValue = blockGap
-               ? blockGap
-               : `var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) )`;
+       let gapValue = `var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) )`;
+       // Check for the possibility of split block gap values. See: https://github.com/WordPress/gutenberg/pull/37736
+       if ( !! blockGap ) {
+               gapValue = typeof blockGap === 'string' ? blockGap : blockGap?.left;
+       }
+

Co-authored-by: Ramon <ramonjd@users.noreply.github.com>
@dd32
Copy link
Member Author

dd32 commented May 19, 2022

The Gallery block hasn't opted-in to the split row / column support for blockGap, so I'm not quite sure how the users managed to create their patterns (though they could have manually edited the markup to try to achieve the result).

Ah interesting!

Users can copy-paste patterns in from elsewhere, so if they created it outside of the editor that might explain it. Avoiding errors just because of invalid block settings is still required obviously though :)

I tracked down a pattern that triggers it: https://wordpress.org/patterns/pattern/fullwidth-gallery-section-with-half-framed-title/ - here's the source: https://gist.github.com/dd32/5a2db374548d50f5ec8574553c6169a2
and here's it's relevant block headers:

<!-- wp:gallery {"linkTo":"none","align":"full","style":{"spacing":{"blockGap":{"top":"0px","left":"0px"}}}} -->

I've looked through the revisions, and it looks like it might have been from a copy-paste, however, an older revision does have a wp:column block with that blockGap spacing which was later changed.. I think it's probably safe to say that the blocks were crafted outside of the WordPress.org pattern creator.

@ramonjd ramonjd self-assigned this May 19, 2022
@ramonjd
Copy link
Member

ramonjd commented May 19, 2022

Updated so that the 'left' (representing gap column) axial value for gap will be used (if any)

2022-05-19 09 25 35

@github-actions
Copy link

github-actions bot commented May 19, 2022

Size Change: -3.06 kB (0%)

Total Size: 1.24 MB

Filename Size Change
build/block-editor/index.min.js 150 kB -754 B (-1%)
build/block-editor/style-rtl.css 14.5 kB -402 B (-3%)
build/block-editor/style.css 14.5 kB -400 B (-3%)
build/block-library/blocks/image/editor-rtl.css 738 B +7 B (+1%)
build/block-library/blocks/image/editor.css 737 B +7 B (+1%)
build/block-library/blocks/video/editor-rtl.css 561 B -10 B (-2%)
build/block-library/blocks/video/editor.css 563 B -9 B (-2%)
build/block-library/editor-rtl.css 10.2 kB -2 B (0%)
build/block-library/editor.css 10.3 kB -1 B (0%)
build/block-library/index.min.js 181 kB +108 B (0%)
build/components/index.min.js 227 kB +86 B (0%)
build/components/style-rtl.css 14.5 kB -556 B (-4%)
build/components/style.css 14.5 kB -553 B (-4%)
build/compose/index.min.js 11.7 kB +9 B (0%)
build/edit-navigation/style-rtl.css 4.05 kB -3 B (0%)
build/edit-navigation/style.css 4.05 kB -2 B (0%)
build/edit-post/index.min.js 30.4 kB +2 B (0%)
build/edit-post/style-rtl.css 7.08 kB -8 B (0%)
build/edit-post/style.css 7.08 kB -9 B (0%)
build/edit-site/index.min.js 47.9 kB -47 B (0%)
build/edit-site/style-rtl.css 7.73 kB -237 B (-3%)
build/edit-site/style.css 7.71 kB -236 B (-3%)
build/edit-widgets/style-rtl.css 4.4 kB -3 B (0%)
build/edit-widgets/style.css 4.4 kB -2 B (0%)
build/editor/style-rtl.css 3.71 kB -4 B (0%)
build/editor/style.css 3.7 kB -4 B (0%)
build/list-reusable-blocks/style-rtl.css 835 B -3 B (0%)
build/list-reusable-blocks/style.css 835 B -3 B (0%)
build/nux/index.min.js 2.1 kB -7 B (0%)
build/nux/style-rtl.css 744 B -7 B (-1%)
build/nux/style.css 741 B -8 B (-1%)
build/widgets/index.min.js 7.2 kB -4 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 993 B
build/annotations/index.min.js 2.77 kB
build/api-fetch/index.min.js 2.27 kB
build/autop/index.min.js 2.15 kB
build/blob/index.min.js 487 B
build/block-directory/index.min.js 6.51 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 150 B
build/block-library/blocks/audio/editor.css 150 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/avatar/editor-rtl.css 116 B
build/block-library/blocks/avatar/editor.css 116 B
build/block-library/blocks/avatar/style-rtl.css 59 B
build/block-library/blocks/avatar/style.css 59 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 445 B
build/block-library/blocks/button/editor.css 445 B
build/block-library/blocks/button/style-rtl.css 560 B
build/block-library/blocks/button/style.css 560 B
build/block-library/blocks/buttons/editor-rtl.css 292 B
build/block-library/blocks/buttons/editor.css 292 B
build/block-library/blocks/buttons/style-rtl.css 275 B
build/block-library/blocks/buttons/style.css 275 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 103 B
build/block-library/blocks/code/style.css 103 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 127 B
build/block-library/blocks/comment-template/style.css 127 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 95 B
build/block-library/blocks/comments/editor.css 95 B
build/block-library/blocks/cover/editor-rtl.css 546 B
build/block-library/blocks/cover/editor.css 547 B
build/block-library/blocks/cover/style-rtl.css 1.53 kB
build/block-library/blocks/cover/style.css 1.53 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 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 353 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 961 B
build/block-library/blocks/gallery/editor.css 964 B
build/block-library/blocks/gallery/style-rtl.css 1.51 kB
build/block-library/blocks/gallery/style.css 1.51 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 333 B
build/block-library/blocks/group/editor.css 333 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 332 B
build/block-library/blocks/html/editor.css 333 B
build/block-library/blocks/image/style-rtl.css 529 B
build/block-library/blocks/image/style.css 535 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 199 B
build/block-library/blocks/latest-posts/editor.css 198 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 493 B
build/block-library/blocks/media-text/style.css 490 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 708 B
build/block-library/blocks/navigation-link/editor.css 706 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 299 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation-submenu/view.min.js 375 B
build/block-library/blocks/navigation/editor-rtl.css 2.03 kB
build/block-library/blocks/navigation/editor.css 2.04 kB
build/block-library/blocks/navigation/style-rtl.css 1.95 kB
build/block-library/blocks/navigation/style.css 1.94 kB
build/block-library/blocks/navigation/view-modal.min.js 2.78 kB
build/block-library/blocks/navigation/view.min.js 395 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 157 B
build/block-library/blocks/paragraph/editor.css 157 B
build/block-library/blocks/paragraph/style-rtl.css 260 B
build/block-library/blocks/paragraph/style.css 260 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 69 B
build/block-library/blocks/post-comments-form/editor.css 69 B
build/block-library/blocks/post-comments-form/style-rtl.css 495 B
build/block-library/blocks/post-comments-form/style.css 495 B
build/block-library/blocks/post-comments/editor-rtl.css 77 B
build/block-library/blocks/post-comments/editor.css 77 B
build/block-library/blocks/post-comments/style-rtl.css 628 B
build/block-library/blocks/post-comments/style.css 628 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 721 B
build/block-library/blocks/post-featured-image/editor.css 721 B
build/block-library/blocks/post-featured-image/style-rtl.css 153 B
build/block-library/blocks/post-featured-image/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 323 B
build/block-library/blocks/post-template/style.css 323 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 80 B
build/block-library/blocks/post-title/style.css 80 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 370 B
build/block-library/blocks/pullquote/style.css 370 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 234 B
build/block-library/blocks/query-pagination/style.css 231 B
build/block-library/blocks/query/editor-rtl.css 369 B
build/block-library/blocks/query/editor.css 369 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 397 B
build/block-library/blocks/search/style.css 398 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 146 B
build/block-library/blocks/separator/editor.css 146 B
build/block-library/blocks/separator/style-rtl.css 233 B
build/block-library/blocks/separator/style.css 233 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 474 B
build/block-library/blocks/shortcode/editor.css 474 B
build/block-library/blocks/site-logo/editor-rtl.css 759 B
build/block-library/blocks/site-logo/editor.css 759 B
build/block-library/blocks/site-logo/style-rtl.css 181 B
build/block-library/blocks/site-logo/style.css 181 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 177 B
build/block-library/blocks/social-link/editor.css 177 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.37 kB
build/block-library/blocks/social-links/style.css 1.36 kB
build/block-library/blocks/spacer/editor-rtl.css 332 B
build/block-library/blocks/spacer/editor.css 332 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 504 B
build/block-library/blocks/table/editor.css 504 B
build/block-library/blocks/table/style-rtl.css 625 B
build/block-library/blocks/table/style.css 625 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 226 B
build/block-library/blocks/tag-cloud/style.css 227 B
build/block-library/blocks/template-part/editor-rtl.css 149 B
build/block-library/blocks/template-part/editor.css 149 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/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 993 B
build/block-library/common.css 990 B
build/block-library/reset-rtl.css 478 B
build/block-library/reset.css 478 B
build/block-library/style-rtl.css 11.5 kB
build/block-library/style.css 11.6 kB
build/block-library/theme-rtl.css 689 B
build/block-library/theme.css 694 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 47.1 kB
build/core-data/index.min.js 14.6 kB
build/customize-widgets/index.min.js 11.2 kB
build/customize-widgets/style-rtl.css 1.39 kB
build/customize-widgets/style.css 1.39 kB
build/data-controls/index.min.js 663 B
build/data/index.min.js 7.98 kB
build/date/index.min.js 32 kB
build/deprecated/index.min.js 518 B
build/dom-ready/index.min.js 336 B
build/dom/index.min.js 4.69 kB
build/edit-navigation/index.min.js 16 kB
build/edit-post/classic-rtl.css 546 B
build/edit-post/classic.css 547 B
build/edit-widgets/index.min.js 16.4 kB
build/editor/index.min.js 38.5 kB
build/element/index.min.js 4.3 kB
build/escape-html/index.min.js 548 B
build/format-library/index.min.js 6.62 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.66 kB
build/html-entities/index.min.js 454 B
build/i18n/index.min.js 3.79 kB
build/is-shallow-equal/index.min.js 535 B
build/keyboard-shortcuts/index.min.js 1.83 kB
build/keycodes/index.min.js 1.41 kB
build/list-reusable-blocks/index.min.js 1.75 kB
build/media-utils/index.min.js 2.9 kB
build/notices/index.min.js 957 B
build/plugins/index.min.js 1.98 kB
build/preferences-persistence/index.min.js 2.23 kB
build/preferences/index.min.js 1.32 kB
build/primitives/index.min.js 949 B
build/priority-queue/index.min.js 628 B
build/react-i18n/index.min.js 704 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.69 kB
build/reusable-blocks/index.min.js 2.24 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 11.2 kB
build/server-side-render/index.min.js 1.61 kB
build/shortcode/index.min.js 1.52 kB
build/token-list/index.min.js 668 B
build/url/index.min.js 1.99 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 280 B
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.07 kB

compressed-size-action

@andrewserong
Copy link
Contributor

Thanks for progressing the PR @ramonjd (and for getting it all started, Dion!)

Hope you don't mind, Ramon, I've pushed an update in 46a7e40 — I noticed that the split vertical / horizontal values weren't being output (it was using the column value for the gap CSS property so left won out for the vertical direction), so I've tweaked the logic a bit so that the CSS variable uses the column value, and the gap property uses the concatenated value. It appears to be rendering correctly for me now:

image

Here's the markup I'm using:

Gallery block markup
<!-- wp:gallery {"columns":2,"linkTo":"none","className":"columns-2","style":{"spacing":{"blockGap":{"top":"20px","left":"2px"}}}} -->
<figure class="wp-block-gallery has-nested-images columns-2 is-cropped"><!-- wp:image {"id":27,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="http://a-toule-site.local/wp-content/uploads/2022/02/IMG_3878-768x1024.jpg" alt="" class="wp-image-27"/></figure>
<!-- /wp:image -->

<!-- wp:image {"id":26,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="http://a-toule-site.local/wp-content/uploads/2022/02/IMG_3880-768x1024.jpg" alt="" class="wp-image-26"/></figure>
<!-- /wp:image -->

<!-- wp:image {"id":25,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="http://a-toule-site.local/wp-content/uploads/2022/02/IMG_3875-1024x1024.jpg" alt="" class="wp-image-25"/></figure>
<!-- /wp:image --></figure>
<!-- /wp:gallery -->

Feel free to revert / make any further changes if I missed anything! 🙂

@ramonjd
Copy link
Member

ramonjd commented May 19, 2022

Hope you don't mind, Ramon, I've pushed an update in 46a7e40 — I noticed that the split vertical / horizontal values weren't being output

Mind? I love it! Thank you 🙇

I went at it like a bit of a bulldozer and it didn't actually occur to me that the gallery block might support "blockGap": [ "horizontal", "vertical" ], one day 😄

Good call!

Copy link
Member

@ramonjd ramonjd left a comment

Choose a reason for hiding this comment

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

LGTM. I worked on it, so maybe a second 👍 would be comforting

Copy link
Contributor

@glendaviesnz glendaviesnz left a comment

Choose a reason for hiding this comment

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

This worked as advertised for me.

I have added an issue to add the ability to set both in the UI now that it is supported in the backend.

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 worked on it, too, but this is LGTM now as well 🙂

@andrewserong andrewserong merged commit 59f42b3 into trunk May 19, 2022
@andrewserong andrewserong deleted the php81/gallery-block-gap branch May 19, 2022 23:33
@github-actions github-actions bot added this to the Gutenberg 13.4 milestone May 19, 2022
@andrewserong andrewserong added the Backport to WP 6.7 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta label May 19, 2022
@andrewserong
Copy link
Contributor

I've added the Backport label — if possible, I think it'd be good to get this fix into 6.0.1 potentially, just in case.

@andrewserong
Copy link
Contributor

I've added a follow-up PR to opt-in to the controls in the UI in: #41175

adamziel pushed a commit that referenced this pull request May 20, 2022
…Warning/Fatal (#41125)

* Gallery Block: Support gaps that define column/row gaps.

* Fix a variable typo

Co-authored-by: Ramon <ramonjd@users.noreply.github.com>

* Checking for and using a 'left', or gap column, value if the block support gap value is not a string

* Use column gap for CSS variable and combined gap for gap property

* Remove unnecessary fallback

* Tidy whitespace slightly

Co-authored-by: Ramon <ramonjd@users.noreply.github.com>
Co-authored-by: ramonjd <ramonjd@gmail.com>
Co-authored-by: Andrew Serong <14988353+andrewserong@users.noreply.github.com>
@adamziel
Copy link
Contributor

I just cherry-picked this PR to the wp/6.0 branch to get it included in the next release: 71a1b4a

@adamziel adamziel removed the Backport to WP 6.7 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta label May 20, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Gallery Affects the Gallery Block - used to display groups of images [Type] Bug An existing feature does not function as intended
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants