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: add gap support #34608

Closed
wants to merge 6 commits into from
Closed

Conversation

glendaviesnz
Copy link
Contributor

@glendaviesnz glendaviesnz commented Sep 7, 2021

Description

Adds gap support to allow users to alter the space between images.

Fixes: #33582

Testing

  • Check out PR to local dev env and run in conjunction with theme.json enabled theme with "blockGap": true, set under spacing
  • Enable the gallery experimental flag and add a gallery
  • Adjust the gap setting in right panel and check that gap is adjusted in editor and frontend

Screenshots

gap

@glendaviesnz glendaviesnz added [Type] Enhancement A suggestion for improvement. [Block] Gallery Affects the Gallery Block - used to display groups of images labels Sep 7, 2021
@glendaviesnz glendaviesnz self-assigned this Sep 7, 2021
@github-actions
Copy link

github-actions bot commented Sep 7, 2021

Size Change: +3.42 kB (0%)

Total Size: 1.04 MB

Filename Size Change
build/block-editor/index.min.js 119 kB +411 B (0%)
build/block-library/blocks/columns/editor-rtl.css 206 B +12 B (+6%) 🔍
build/block-library/blocks/columns/editor.css 205 B +12 B (+6%) 🔍
build/block-library/blocks/columns/style-rtl.css 497 B +23 B (+5%) 🔍
build/block-library/blocks/columns/style.css 496 B +21 B (+4%)
build/block-library/blocks/gallery/editor-rtl.css 927 B +2 B (0%)
build/block-library/blocks/gallery/editor.css 934 B +5 B (+1%)
build/block-library/blocks/gallery/style-rtl.css 1.5 kB -98 B (-6%)
build/block-library/blocks/gallery/style.css 1.5 kB -99 B (-6%)
build/block-library/blocks/query-pagination/style-rtl.css 239 B +71 B (+42%) 🚨
build/block-library/blocks/query-pagination/style.css 236 B +68 B (+40%) 🚨
build/block-library/blocks/social-links/style-rtl.css 1.3 kB -29 B (-2%)
build/block-library/blocks/social-links/style.css 1.3 kB -29 B (-2%)
build/block-library/editor-rtl.css 9.54 kB +18 B (0%)
build/block-library/editor.css 9.52 kB +17 B (0%)
build/block-library/index.min.js 151 kB +866 B (+1%)
build/block-library/style-rtl.css 10 kB -96 B (-1%)
build/block-library/style.css 10 kB -104 B (-1%)
build/blocks/index.min.js 46.9 kB +54 B (0%)
build/components/index.min.js 209 kB +17 B (0%)
build/core-data/index.min.js 12.3 kB -115 B (-1%)
build/customize-widgets/index.min.js 11.1 kB +6 B (0%)
build/dom/index.min.js 4.53 kB +3 B (0%)
build/edit-navigation/index.min.js 14.9 kB +943 B (+7%) 🔍
build/edit-navigation/style-rtl.css 3.37 kB +111 B (+3%)
build/edit-navigation/style.css 3.37 kB +112 B (+3%)
build/edit-site/index.min.js 26.4 kB +62 B (0%)
build/edit-widgets/index.min.js 16.1 kB +8 B (0%)
build/widgets/index.min.js 7.27 kB +902 B (+14%) ⚠️
build/widgets/style-rtl.css 1.17 kB +126 B (+12%) ⚠️
build/widgets/style.css 1.18 kB +125 B (+12%) ⚠️
ℹ️ 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.19 kB
build/autop/index.min.js 2.08 kB
build/blob/index.min.js 459 B
build/block-directory/index.min.js 6.2 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-editor/style-rtl.css 13.8 kB
build/block-editor/style.css 13.8 kB
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/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/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 70 B
build/block-library/blocks/group/theme.css 70 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 283 B
build/block-library/blocks/html/editor.css 284 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 489 B
build/block-library/blocks/navigation-link/editor.css 488 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/editor-rtl.css 1.72 kB
build/block-library/blocks/navigation/editor.css 1.72 kB
build/block-library/blocks/navigation/style-rtl.css 1.42 kB
build/block-library/blocks/navigation/style.css 1.41 kB
build/block-library/blocks/navigation/view.min.js 2.52 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 310 B
build/block-library/blocks/page-list/editor.css 310 B
build/block-library/blocks/page-list/style-rtl.css 241 B
build/block-library/blocks/page-list/style.css 241 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 261 B
build/block-library/blocks/paragraph/style.css 261 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-content/editor-rtl.css 138 B
build/block-library/blocks/post-content/editor.css 138 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-featured-image/style-rtl.css 143 B
build/block-library/blocks/post-featured-image/style.css 143 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 378 B
build/block-library/blocks/post-template/style.css 379 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 270 B
build/block-library/blocks/query-pagination/editor.css 262 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/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 527 B
build/block-library/reset.css 527 B
build/block-library/theme-rtl.css 658 B
build/block-library/theme.css 663 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.8 kB
build/components/style.css 15.8 kB
build/compose/index.min.js 10.2 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/edit-post/classic-rtl.css 492 B
build/edit-post/classic.css 494 B
build/edit-post/index.min.js 29 kB
build/edit-post/style-rtl.css 7.2 kB
build/edit-post/style.css 7.2 kB
build/edit-site/style-rtl.css 5.07 kB
build/edit-site/style.css 5.07 kB
build/edit-widgets/style-rtl.css 4.06 kB
build/edit-widgets/style.css 4.06 kB
build/editor/index.min.js 37.7 kB
build/editor/style-rtl.css 3.74 kB
build/editor/style.css 3.73 kB
build/element/index.min.js 3.17 kB
build/escape-html/index.min.js 517 B
build/format-library/index.min.js 5.36 kB
build/format-library/style-rtl.css 668 B
build/format-library/style.css 669 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.49 kB
build/keycodes/index.min.js 1.25 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.88 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.32 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/wordcount/index.min.js 1.04 kB

compressed-size-action

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 jumping in and starting to use the blockGap support @glendaviesnz! This is testing nicely in the editor and on the front end of my test site using the refactored gallery. I think it's going to enable some nice layouts 🙂

I noticed that with the v1 / non-refactored gallery, opting into the blockGap support exposes the blockGap control in the Dimensions panel, however because that CSS isn't updated to use the --wp--style--block-gap variable, the control doesn't appear to do anything. Do you think it'd be worth seeing if we can somehow hide the control on the old gallery, or should we update its CSS to support it, too?

Also, with the --gallery--block--gutter-size variable, is that one that theme authors are targeting? Once the Layout / blockGap support is more widely used, it looks like this PR will use the gap value to override it. That makes sense to me, but I wasn't sure if it'll cause any issues for theme developers? Alternately, if the --gallery--block--gutter-size variable isn't being used elsewhere, we could potentially update the existing vars to use the blockGap variable instead.

@@ -3,6 +3,10 @@

// Styles for current version of gallery block.
.wp-block-gallery.has-nested-images {
--gallery-block--gutter-size: var(
--wp--style--block-gap,
$blocks-block__margin
Copy link
Contributor

Choose a reason for hiding this comment

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

Should this fallback value be #{$grid-unit-20} for consistency with the other fallback values below? I think $blocks-block__margin is a Sass variable used only in the Button/Buttons blocks?

Also, it looks like the linting is complaining about the formatting:

[3] packages/block-library/src/gallery/style.scss
[3]  6:30  ✖  Expected newline after ":" with a multi-line declaration   declaration-colon-newline-after  
[3]  6:36  ✖  Unexpected whitespace after "("                            function-parentheses-space-inside
[3]  7:25  ✖  Expected single space after ","                            function-comma-space-after       
[3]  9:1   ✖  Unexpected whitespace before ")"                           function-parentheses-space-inside

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Should this fallback value be #{$grid-unit-20} for consistency with the other fallback values below? I think $blocks-block__margin is a Sass variable used only in the Button/Buttons blocks?

🤦 Doh, thanks, was a bit confused there - have tidied it up so that the correct fallback $grid-unit-20 is used and it is just declared in one place

Copy link
Contributor

Choose a reason for hiding this comment

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

Thanks @glendaviesnz! I think this one also needs the interpolation syntax to render the fallback Sass value. In the CSS the Sass variable is being rendered as-is, instead of being swapped out for the real value:

image

So it'd be #{$grid-unit-20} instead of $grid-unit-20, which should result in the following:

image

@glendaviesnz
Copy link
Contributor Author

with the --gallery--block--gutter-size variable, is that one that theme authors are targeting

This var is just declared at the gallery level to avoid having to duplicate the fallback setting everywhere --wp--style--block-gap is used in the gallery css

@glendaviesnz
Copy link
Contributor Author

I noticed that with the v1 / non-refactored gallery, opting into the blockGap support exposes the blockGap control in the Dimensions panel,

I have removed the ToolsPanel for v1 of the gallery as it seems like it would be helpful if we don't have to support any new styles in both versions, and a good reason for people to update to the new format. The only way I could see to do this was by setting the display style on the ToolsPanel element - let me know if you can think of another way to do this using the blocks APIs.

@@ -94,6 +94,18 @@ function GalleryEdit( props ) {
blockEditorStore
);

// Remove the tools panel for v1 Gallery so we only have to support
// any new dimension settings, etc. for the new gallery format.
const toolsPanel = document.getElementsByClassName(
Copy link
Contributor

Choose a reason for hiding this comment

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

The CSS rule is working nicely to hide the ToolsPanel, and I like it as a pragmatic workaround for not being able to conditionally update the block's supports settings / alter whether or not the panel is displayed.

This might be overkill (and I'm maybe being overly cautious), but I was wondering if it's worth making the check a little more specific to the block inspector? What do you think about something like the following:

const toolsPanel = document.querySelector( '.block-editor-block-inspector .components-tools-panel' );

Copy link
Contributor

Choose a reason for hiding this comment

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

Another case that we probably can't really do much about is whether or not the gap control is displayed in global styles for this block 🤔

@andrewserong
Copy link
Contributor

This is testing pretty well for me @glendaviesnz, just added another comment about the fallback values. I've added Joen as a reviewer, too, since I know he's very keen to see more block gap usage across the blocks! 🙂

@glendaviesnz
Copy link
Contributor Author

Thanks @andrewserong, I have made the additional changes suggested.

@andrewserong
Copy link
Contributor

Thanks @glendaviesnz! I'm finishing up early today, but I'll give this another test tomorrow 🙂

@jasmussen
Copy link
Contributor

The gallery block is perhaps the block that can benefit the very most from gap suppor, so thanks for taking this on.

That also begs the next question: is it time to move on to actually using gap rather than piping the variable through to the existing margin rules? I realize the latter could make for a smaller and safer step. But perhaps the biggest benefit of gap is that it can relieve us of gnarly nth-child/last-child rules, and would vastly simplify the intrinsic responsive code we'd like to add to it, potentially letting us use CSS grid with autofit and minmax.

I wouldn't necessarily be opposed to landing this as an interim step, since it does improve the UI. Though it does resurface the question I just posed in the other PR: is "Dimensions" the right panel to put the block gap control in? Or should it be part of Layout or Spacing?

@jasmussen jasmussen mentioned this pull request Sep 8, 2021
23 tasks
@glendaviesnz
Copy link
Contributor Author

That also begs the next question: is it time to move on to actually using gap rather than piping the variable through to the existing margin rules?

Good question, I will do some research on this and see if we will cause any issues by implementing as margin change first and then moving to grid, or if we are better to leapfrog straight to grid now that we don't need to worry about IE support.

@glendaviesnz
Copy link
Contributor Author

glendaviesnz commented Sep 9, 2021

@jasmussen I have had a look at switching to grid, but the fact that we set any remainder images that don't fit into the set column size to fill the remaining space in the last row, eg.

Screen Shot 2021-09-09 at 4 19 47 PM

is difficult to match in grid. To do this in grid it seems like a lot of nth child calculations are needed:

.grid > *:nth-child(3n-2):nth-last-of-type(1) {
    grid-column: span 3;
}

which would have to be replicated for the 2-8 column settings we have. I may be overlooking a css grid setting that can handle this automatically, but most of the solutions I found for this weren't for a dynamic number of items and columns, or stated that you really should use flex not grid when dealing with this sort of layout.

I have switched the PR to use gap in the flex layout rather than the messy setting and unsetting of right margins. Keen to hear if you think we can easily replicate this layout for remainder items in grid.

@andrewserong
Copy link
Contributor

Thanks for exploring switching the margin rules out for gap @glendaviesnz, just adding that it's testing well for me so far in Safari iOS and on desktop Mac browsers. Nice to see how much CSS we can remove with the switch, too!

@jasmussen
Copy link
Contributor

jasmussen commented Sep 9, 2021

Wasn't able to test the latest branch today, but thanks for exploring! Just to note, you can use gap both with CSS grid, but also with flexbox, and since the gallery is already flex, that might be a good or smaller first step to explore before going full on CSS grid.

It would also be fine to keep using the margins for the near future, and make this just about a UI improvement rather than a full-on refactor. Gap is something to be excited about both in terms of the simpler UI, but also in terms of the CSS property, but it's okay to take it slowly — the big gallery refactor was already a leap in terms of features 👌

@glendaviesnz
Copy link
Contributor Author

Just to note, you can use gap both with CSS grid, but also with flexbox, and since the gallery is already flex, that might be a good or smaller first step

Thanks @jasmussen, I have kept it as flexbox for now, but switched to using gap instead of margins. This seems to work well and has simplified the css.

@jasmussen
Copy link
Contributor

The amount of red here is beautiful!

It's an important code refactor that can inject some energy into a block that sorely needs it. But it's also a biggish change — not in code complexity, but in potential impact. How can we best get a few different people test across a few themes and browsers, perhaps even plugins?

@glendaviesnz
Copy link
Contributor Author

glendaviesnz commented Sep 13, 2021

How can we best get a few different people test across a few themes and browsers, perhaps even plugins

  • @andrewserong and I have tested across all supported browsers, including Android and iOS
  • I have tested with TT1 blocks, TT1, TwentyTwenty, TwentyNinteen, Seedlet, Maywood and these 10 gallery related themes. Most of these are not block based themes so the gap value can't be modified, but the default gap of 16px works and the gallery displays across all of them as expected
  • I haven't been able to find a plugin that modifies the core gallery, all gallery block plugins I can find create their own standalone gallery - @jasmussen are you aware of any plugins that modify the core gallery block?
  • I have tested it with CoBlocks to make sure the additional Image block styles it adds work correctly in conjunction with the new gap css setting and they seem to.

Does anyone have any thoughts on additional testing we should do for this change in relation to gallery themes and plugins?

@glendaviesnz
Copy link
Contributor Author

With the big change that the gallery block is already, and code freeze for 5.9 coming up soon, I think we should defer this change until we have an critical fixes for 5.9 sorted, and we can then decide if we want to include this, or defer until the block is live in 5.9. Going to close for now.

@glendaviesnz glendaviesnz deleted the add/gap-support-to-gallery branch January 12, 2022 04:22
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] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Gallery block: add ability to set gutter Add a way to control spacing between gallery images
3 participants