← All changes
|
build/scripts/block-library/navigation-submenu.php
+31
-20
23.2.2
→
24.1.0
View file →
| @@ -6,11 +6,23 @@ | ||
| 6 | 6 | */ |
| 7 | 7 | |
| 8 | 8 | require_once __DIR__ . '/navigation-link/shared/item-should-render.php'; |
| 9 | 9 | require_once __DIR__ . '/navigation-link/shared/render-submenu-icon.php'; |
| 10 | -require_once __DIR__ . '/navigation-link/shared/build-css-font-sizes.php'; | |
| 11 | 10 | |
| 12 | 11 | /** |
| 12 | + * Renders the submenu icon SVG for the Navigation Submenu block. | |
| 13 | + * | |
| 14 | + * @since 5.9.0 | |
| 15 | + * @deprecated 7.0.0 Use block_core_shared_navigation_render_submenu_icon() instead. | |
| 16 | + * | |
| 17 | + * @return string SVG markup for the submenu icon. | |
| 18 | + */ | |
| 19 | +function gutenberg_block_core_navigation_submenu_render_submenu_icon() { | |
| 20 | + _deprecated_function( __FUNCTION__, '7.0.0', 'block_core_shared_navigation_render_submenu_icon()' ); | |
| 21 | + return block_core_shared_navigation_render_submenu_icon(); | |
| 22 | +} | |
| 23 | + | |
| 24 | +/** | |
| 13 | 25 | * Returns the submenu visibility value with backward compatibility |
| 14 | 26 | * for the deprecated openSubmenusOnClick attribute. |
| 15 | 27 | * |
| 16 | 28 | * This function centralizes the migration logic from the boolean |
| @@ -63,12 +75,15 @@ | ||
| 63 | 75 | */ |
| 64 | 76 | function gutenberg_render_block_core_navigation_submenu( $attributes, $content, $block ) { |
| 65 | 77 | // Check if this navigation item should render based on post status. |
| 66 | 78 | if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { |
| 67 | - if ( ! gutenberg_block_core_shared_navigation_item_should_render( $attributes, $block ) ) { | |
| 68 | - return ''; | |
| 69 | - } | |
| 79 | + $should_render = gutenberg_block_core_shared_navigation_item_should_render( $attributes, $block ); | |
| 80 | + } else { | |
| 81 | + $should_render = block_core_shared_navigation_item_should_render( $attributes, $block ); | |
| 70 | 82 | } |
| 83 | + if ( ! $should_render ) { | |
| 84 | + return ''; | |
| 85 | + } | |
| 71 | 86 | |
| 72 | 87 | // Don't render the block's subtree if it has no label. |
| 73 | 88 | if ( empty( $attributes['label'] ) ) { |
| 74 | 89 | return ''; |
| @@ -73,19 +88,8 @@ | ||
| 73 | 88 | if ( empty( $attributes['label'] ) ) { |
| 74 | 89 | return ''; |
| 75 | 90 | } |
| 76 | 91 | |
| 77 | - // The build system prefixes this function with "gutenberg_" to avoid | |
| 78 | - // collisions with the core version. Until this function is backported to | |
| 79 | - // core, we need to guard its use and only call the prefixed name in | |
| 80 | - // the plugin. | |
| 81 | - if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { | |
| 82 | - $font_sizes = gutenberg_block_core_shared_navigation_build_css_font_sizes( $block->context ); | |
| 83 | - } else { | |
| 84 | - $font_sizes = block_core_shared_navigation_build_css_font_sizes( $block->context ); | |
| 85 | - } | |
| 86 | - $style_attribute = $font_sizes['inline_styles']; | |
| 87 | - | |
| 88 | 92 | // Render inner blocks first to check if any menu items will actually display. |
| 89 | 93 | $inner_blocks_html = ''; |
| 90 | 94 | foreach ( $block->inner_blocks as $inner_block ) { |
| 91 | 95 | $inner_blocks_html .= $inner_block->render(); |
| @@ -110,12 +114,9 @@ | ||
| 110 | 114 | |
| 111 | 115 | $classes = array( |
| 112 | 116 | 'wp-block-navigation-item', |
| 113 | 117 | ); |
| 114 | - $classes = array_merge( | |
| 115 | - $classes, | |
| 116 | - $font_sizes['css_classes'] | |
| 117 | - ); | |
| 118 | + | |
| 118 | 119 | if ( $has_submenu ) { |
| 119 | 120 | $classes[] = 'has-child'; |
| 120 | 121 | } |
| 121 | 122 | if ( $open_on_click ) { |
| @@ -133,9 +134,8 @@ | ||
| 133 | 134 | |
| 134 | 135 | $wrapper_attributes = get_block_wrapper_attributes( |
| 135 | 136 | array( |
| 136 | 137 | 'class' => implode( ' ', $classes ), |
| 137 | - 'style' => $style_attribute, | |
| 138 | 138 | ) |
| 139 | 139 | ); |
| 140 | 140 | |
| 141 | 141 | $label = ''; |
| @@ -270,8 +270,19 @@ | ||
| 270 | 270 | |
| 271 | 271 | $style_attribute = ''; |
| 272 | 272 | if ( array_key_exists( 'style', $colors_supports ) ) { |
| 273 | 273 | $style_attribute = $colors_supports['style']; |
| 274 | + } | |
| 275 | + | |
| 276 | + /* | |
| 277 | + * Shadow serialization is skipped for this block so the shadow lands on the | |
| 278 | + * dropdown panel, the floating layer it is meant for, and not the menu item. | |
| 279 | + */ | |
| 280 | + if ( ! empty( $attributes['style']['shadow'] ) ) { | |
| 281 | + $shadow_styles = gutenberg_style_engine_get_styles( array( 'shadow' => $attributes['style']['shadow'] ) ); | |
| 282 | + if ( ! empty( $shadow_styles['css'] ) ) { | |
| 283 | + $style_attribute .= $shadow_styles['css']; | |
| 284 | + } | |
| 274 | 285 | } |
| 275 | 286 | |
| 276 | 287 | if ( strpos( $inner_blocks_html, 'current-menu-item' ) ) { |
| 277 | 288 | $tag_processor = new WP_HTML_Tag_Processor( $html ); |