diff --git a/src/wp-admin/css/view-transitions.css b/src/wp-admin/css/view-transitions.css new file mode 100644 index 0000000000000..bfb556769495b --- /dev/null +++ b/src/wp-admin/css/view-transitions.css @@ -0,0 +1,7 @@ +@view-transition { + navigation: auto; +} + +#adminmenu > .menu-top { + view-transition-name: attr(id type(), none); +} diff --git a/src/wp-includes/default-filters.php b/src/wp-includes/default-filters.php index db3748c5265c8..de0b374ef4b56 100644 --- a/src/wp-includes/default-filters.php +++ b/src/wp-includes/default-filters.php @@ -599,6 +599,7 @@ add_action( 'admin_enqueue_scripts', 'wp_localize_jquery_ui_datepicker', 1000 ); add_action( 'admin_enqueue_scripts', 'wp_common_block_scripts_and_styles' ); add_action( 'admin_enqueue_scripts', 'wp_enqueue_command_palette_assets' ); +add_action( 'admin_enqueue_scripts', 'wp_enqueue_view_transitions_admin_css' ); add_action( 'enqueue_block_assets', 'wp_enqueue_classic_theme_styles' ); add_action( 'enqueue_block_assets', 'wp_enqueue_registered_block_scripts_and_styles' ); add_action( 'enqueue_block_assets', 'enqueue_block_styles_assets', 30 ); diff --git a/src/wp-includes/script-loader.php b/src/wp-includes/script-loader.php index 2d1f49ff95f0d..69767cbd3ba47 100644 --- a/src/wp-includes/script-loader.php +++ b/src/wp-includes/script-loader.php @@ -1696,6 +1696,9 @@ function wp_default_styles( $styles ) { $wp_edit_blocks_dependencies ); + $styles->add( 'wp-view-transitions-admin', false ); + $styles->add_inline_style( 'wp-view-transitions-admin', wp_get_view_transitions_admin_css() ); + $package_styles = array( 'block-editor' => array( 'wp-components', 'wp-preferences' ), 'block-library' => array(), diff --git a/src/wp-includes/view-transitions.php b/src/wp-includes/view-transitions.php new file mode 100644 index 0000000000000..2d2ad61e0b431 --- /dev/null +++ b/src/wp-includes/view-transitions.php @@ -0,0 +1,30 @@ +original_wp_styles = $wp_styles; + } + + public function tear_down() { + global $wp_styles; + + $wp_styles = $this->original_wp_styles; + parent::tear_down(); + } + + /** + * Tests that the hook for enqueuing admin view transitions CSS is set up. + * + * @ticket 64470 + */ + public function test_hook() { + $this->assertSame( 10, has_action( 'admin_enqueue_scripts', 'wp_enqueue_view_transitions_admin_css' ) ); + } + + /** + * Tests that the admin view transitions style handle includes the inline CSS. + * + * @ticket 64470 + */ + public function test_inline_css_included() { + $inline_css = wp_styles()->get_data( 'wp-view-transitions-admin', 'after' ); + $this->assertIsArray( $inline_css ); + $this->assertContains( wp_get_view_transitions_admin_css(), $inline_css ); + } + + /** + * Tests enqueuing admin view transitions CSS. + * + * @ticket 64470 + */ + public function test_wp_enqueue_view_transitions_admin_css() { + $this->assertFalse( wp_style_is( 'wp-view-transitions-admin' ) ); + + wp_enqueue_view_transitions_admin_css(); + $this->assertTrue( wp_style_is( 'wp-view-transitions-admin' ) ); + } +}