Skip to content

Commit 3cbba16

Browse files
Editor: add “fill available space” option to grid layout.
Allows grid columns to stretch and fill available space instead of leaving empty tracks by using the autoFit keyword. Props shreya0shrivastava, isabel_brison. Fixes #65531. git-svn-id: https://develop.svn.wordpress.org/trunk@62554 602fd350-edb4-49c9-b593-d223f7449a82
1 parent 3fccf83 commit 3cbba16

1 file changed

Lines changed: 7 additions & 3 deletions

File tree

src/wp-includes/block-supports/layout.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -828,7 +828,7 @@ function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false
828828
$responsive_gap_value = '0px';
829829
}
830830

831-
$should_output_grid_columns = null === $viewport_overrides || $has_viewport_property_override( 'minimumColumnWidth' ) || $has_viewport_property_override( 'columnCount' );
831+
$should_output_grid_columns = null === $viewport_overrides || $has_viewport_property_override( 'minimumColumnWidth' ) || $has_viewport_property_override( 'columnCount' ) || $has_viewport_property_override( 'autoFit' );
832832
$uses_gap_in_grid_columns = ! empty( $layout_for_styles['columnCount'] ) && ! empty( $layout_for_styles['minimumColumnWidth'] );
833833
if ( $has_block_gap_override && $uses_gap_in_grid_columns ) {
834834
$should_output_grid_columns = true;
@@ -837,14 +837,18 @@ function wp_get_layout_style( $selector, $layout, $has_block_gap_support = false
837837
$should_output_grid_rows = ( null === $viewport_overrides || $has_viewport_property_override( 'rowCount' ) ) && ! empty( $layout_for_styles['columnCount'] ) && ! empty( $layout_for_styles['rowCount'] );
838838
$grid_declarations = array();
839839

840+
// When enabled, columns stretch to fill the available space using
841+
// `auto-fit`; otherwise empty tracks are preserved with `auto-fill`.
842+
$auto_placement = ! empty( $layout_for_styles['autoFit'] ) ? 'auto-fit' : 'auto-fill';
843+
840844
if ( $should_output_grid_columns && ! empty( $layout_for_styles['columnCount'] ) && ! empty( $layout_for_styles['minimumColumnWidth'] ) ) {
841845
$max_value = 'max(min(' . $layout_for_styles['minimumColumnWidth'] . ', 100%), (100% - (' . $responsive_gap_value . ' * (' . $layout_for_styles['columnCount'] . ' - 1))) /' . $layout_for_styles['columnCount'] . ')';
842-
$grid_declarations['grid-template-columns'] = 'repeat(auto-fill, minmax(' . $max_value . ', 1fr))';
846+
$grid_declarations['grid-template-columns'] = 'repeat(' . $auto_placement . ', minmax(' . $max_value . ', 1fr))';
843847
} elseif ( $should_output_grid_columns && ! empty( $layout_for_styles['columnCount'] ) ) {
844848
$grid_declarations['grid-template-columns'] = 'repeat(' . $layout_for_styles['columnCount'] . ', minmax(0, 1fr))';
845849
} elseif ( $should_output_grid_columns ) {
846850
$minimum_column_width = ! empty( $layout_for_styles['minimumColumnWidth'] ) ? $layout_for_styles['minimumColumnWidth'] : '12rem';
847-
$grid_declarations['grid-template-columns'] = 'repeat(auto-fill, minmax(min(' . $minimum_column_width . ', 100%), 1fr))';
851+
$grid_declarations['grid-template-columns'] = 'repeat(' . $auto_placement . ', minmax(min(' . $minimum_column_width . ', 100%), 1fr))';
848852
}
849853

850854
if ( ! empty( $grid_declarations ) ) {

0 commit comments

Comments
 (0)