Skip to content

Commit

Permalink
Gallery block: Add css var to enable theme authors to set a default g…
Browse files Browse the repository at this point in the history
…allery gap (#40008)

Co-authored-by: Glen Davies <glen.davies@a8c.com>
  • Loading branch information
glendaviesnz and Glen Davies authored Apr 4, 2022
1 parent 15a9154 commit 4fdf889
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 9 deletions.
1 change: 1 addition & 0 deletions packages/block-library/src/gallery/block.json
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@
"units": [ "px", "em", "rem", "vh", "vw" ],
"spacing": {
"blockGap": true,
"__experimentalSkipSerialization": [ "blockGap" ],
"__experimentalDefaultControls": {
"blockGap": true
}
Expand Down
13 changes: 9 additions & 4 deletions packages/block-library/src/gallery/gap-styles.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,15 @@ import { useContext, createPortal } from '@wordpress/element';

export default function GapStyles( { blockGap, clientId } ) {
const styleElement = useContext( BlockList.__unstableElementContext );

const gap = blockGap
? `#block-${ clientId } { --wp--style--unstable-gallery-gap: ${ blockGap } }`
: `#block-${ clientId } { --wp--style--unstable-gallery-gap: var( --wp--style--block-gap, 0.5em ) }`;
// --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 ) ) )`;
const gap = `#block-${ clientId } {
--wp--style--unstable-gallery-gap: ${ gapValue };
gap: ${ gapValue }
}`;

const GapStyle = () => {
return <style>{ gap }</style>;
Expand Down
12 changes: 7 additions & 5 deletions packages/block-library/src/gallery/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -48,16 +48,18 @@ function block_core_gallery_render( $attributes, $content ) {
// 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.
$gap = preg_match( '%[\\\(&=}]|/\*%', $gap ) ? null : $gap;
$class = wp_unique_id( 'wp-block-gallery-' );
$content = preg_replace(
$gap = preg_match( '%[\\\(&=}]|/\*%', $gap ) ? null : $gap;
$class = wp_unique_id( 'wp-block-gallery-' );
$content = preg_replace(
'/' . preg_quote( 'class="', '/' ) . '/',
'class="' . $class . ' ',
$content,
1
);
$gap_value = $gap ? $gap : 'var( --wp--style--block-gap, 0.5em )';
$style = '.' . $class . '{ --wp--style--unstable-gallery-gap: ' . $gap_value . '}';
// --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.
$gap_value = $gap ? $gap : 'var( --wp--style--gallery-gap-default, var( --gallery-block--gutter-size, var( --wp--style--block-gap, 0.5em ) ) )';
$style = '.' . $class . '{ --wp--style--unstable-gallery-gap: ' . $gap_value . '; gap: ' . $gap_value . '}';
// Ideally styles should be loaded in the head, but blocks may be parsed
// after that, so loading in the footer for now.
// See https://core.trac.wordpress.org/ticket/53494.
Expand Down

0 comments on commit 4fdf889

Please sign in to comment.