Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Ensure that border width styles show consistently in the editor and f…
…rontend for the Search Block. The Search Block skips serialization, which means we have to add the styles to the corresponding elements depending on the search style (button inside or not).
  • Loading branch information
ramonjd committed Dec 9, 2021
commit 813029c8cf62589b07b12c37538c8d7cb4879856
2 changes: 2 additions & 0 deletions packages/block-library/src/search/edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ export default function SearchEdit( {
}, [ insertedInNavigationBlock ] );
const borderRadius = style?.border?.radius;
const borderColor = style?.border?.color;
const borderWidth = style?.border?.width;
const borderProps = useBorderProps( attributes );

// Check for old deprecated numerical border radius. Done as a separate
Expand Down Expand Up @@ -388,6 +389,7 @@ export default function SearchEdit( {
const getWrapperStyles = () => {
const styles = {
borderColor,
borderWidth: isButtonPositionInside ? borderWidth : undefined,
};

const isNonZeroBorderRadius = parseInt( borderRadius, 10 ) !== 0;
Expand Down
29 changes: 19 additions & 10 deletions packages/block-library/src/search/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ function render_block_core_search( $attributes ) {
$use_icon_button = ( ! empty( $attributes['buttonUseIcon'] ) ) ? true : false;
$show_input = ( ! empty( $attributes['buttonPosition'] ) && 'button-only' === $attributes['buttonPosition'] ) ? false : true;
$show_button = ( ! empty( $attributes['buttonPosition'] ) && 'no-button' === $attributes['buttonPosition'] ) ? false : true;
$label_markup = '';
$input_markup = '';
$button_markup = '';
$inline_styles = styles_for_block_core_search( $attributes );
Expand Down Expand Up @@ -178,9 +177,11 @@ function classnames_for_block_core_search( $attributes ) {
* @return array Style HTML attribute.
*/
function styles_for_block_core_search( $attributes ) {
$wrapper_styles = array();
$button_styles = array();
$input_styles = array();
$wrapper_styles = array();
$button_styles = array();
$input_styles = array();
$is_button_inside = ! empty( $attributes['buttonPosition'] ) &&
'button-inside' === $attributes['buttonPosition'];

// Add width styles.
$has_width = ! empty( $attributes['width'] ) && ! empty( $attributes['widthUnit'] );
Expand All @@ -194,15 +195,25 @@ function styles_for_block_core_search( $attributes ) {
);
}

// Add border width styles.
$has_border_width = ! empty( $attributes['style']['border']['width'] );
$border_width = $attributes['style']['border']['width'];

if ( $has_border_width ) {
if ( $is_button_inside ) {
$wrapper_styles[] = sprintf( 'border-width: %s;', esc_attr( $border_width ) );
} else {
$button_styles[] = sprintf( 'border-width: %s;', esc_attr( $border_width ) );
$input_styles[] = sprintf( 'border-width: %s;', esc_attr( $border_width ) );
}
}

// Add border radius styles.
$has_border_radius = ! empty( $attributes['style']['border']['radius'] );

if ( $has_border_radius ) {
$default_padding = '4px';
$border_radius = $attributes['style']['border']['radius'];
// Apply wrapper border radius if button placed inside.
$is_button_inside = ! empty( $attributes['buttonPosition'] ) &&
'button-inside' === $attributes['buttonPosition'];

if ( is_array( $border_radius ) ) {
// Apply styles for individual corner border radii.
Expand Down Expand Up @@ -255,9 +266,7 @@ function styles_for_block_core_search( $attributes ) {
$has_border_color = ! empty( $attributes['style']['border']['color'] );

if ( $has_border_color ) {
$border_color = $attributes['style']['border']['color'];
$is_button_inside = ! empty( $attributes['buttonPosition'] ) &&
'button-inside' === $attributes['buttonPosition'];
$border_color = $attributes['style']['border']['color'];

// Apply wrapper border color if button placed inside.
if ( $is_button_inside ) {
Expand Down