Changeset 59097
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/interactivity-api/class-wp-interactivity-api.php
r59083 r59097 201 201 202 202 /** 203 * Set client-side interactivity-router data. 204 * 205 * Once in the browser, the state will be parsed and used to hydrate the client-side 206 * interactivity stores and the configuration will be available using a `getConfig` utility. 207 * 208 * @since 6.7.0 209 * 210 * @param array $data Data to filter. 211 * @return array Data for the Interactivity Router script module. 212 */ 213 public function filter_script_module_interactivity_router_data( array $data ): array { 214 if ( ! isset( $data['i18n'] ) ) { 215 $data['i18n'] = array(); 216 } 217 $data['i18n']['loading'] = __( 'Loading page, please wait.' ); 218 $data['i18n']['loaded'] = __( 'Page Loaded.' ); 219 return $data; 220 } 221 222 /** 203 223 * Set client-side interactivity data. 204 224 * … … 297 317 public function add_hooks() { 298 318 add_filter( 'script_module_data_@wordpress/interactivity', array( $this, 'filter_script_module_interactivity_data' ) ); 319 add_filter( 'script_module_data_@wordpress/interactivity-router', array( $this, 'filter_script_module_interactivity_router_data' ) ); 299 320 } 300 321 … … 974 995 975 996 /** 976 * Outputs the markup for the top loading indicator and the screen reader 977 * notifications during client-side navigations. 997 * Outputs markup for the @wordpress/interactivity-router script module. 978 998 * 979 999 * This method prints a div element representing a loading bar visible during 980 * navigation, as well as an aria-live region that can be read by screen 981 * readers to announce navigation status. 982 * 983 * @since 6.5.0 984 */ 985 public function print_router_loading_and_screen_reader_markup() { 1000 * navigation. 1001 * 1002 * @since 6.7.0 1003 */ 1004 public function print_router_markup() { 986 1005 echo <<<HTML 987 1006 <div … … 991 1010 data-wp-class--finish-animation="state.navigation.hasFinished" 992 1011 ></div> 993 <div994 class="screen-reader-text"995 aria-live="polite"996 data-wp-interactive="core/router"997 data-wp-text="state.navigation.message"998 ></div>999 1012 HTML; 1000 1013 } … … 1017 1030 $this->has_processed_router_region = true; 1018 1031 1019 // Initialize the `core/router` store. 1032 /* 1033 * Initialize the `core/router` store. 1034 * If the store is not initialized like this with minimal 1035 * navigation object, the interactivity-router script module 1036 * errors. 1037 */ 1020 1038 $this->state( 1021 1039 'core/router', 1022 1040 array( 1023 'navigation' => array( 1024 'texts' => array( 1025 'loading' => __( 'Loading page, please wait.' ), 1026 'loaded' => __( 'Page Loaded.' ), 1027 ), 1028 ), 1041 'navigation' => new stdClass(), 1029 1042 ) 1030 1043 ); … … 1036 1049 1037 1050 // Adds the necessary markup to the footer. 1038 add_action( 'wp_footer', array( $this, 'print_router_ loading_and_screen_reader_markup' ) );1051 add_action( 'wp_footer', array( $this, 'print_router_markup' ) ); 1039 1052 } 1040 1053 } -
trunk/tests/phpunit/tests/interactivity-api/wpInteractivityAPI-wp-router-region.php
r58594 r59097 103 103 * @covers ::process_directives 104 104 */ 105 public function test_wp_router_region_adds_loading_bar_ aria_live_region_only_once() {105 public function test_wp_router_region_adds_loading_bar_region_only_once() { 106 106 $html = ' 107 107 <div data-wp-router-region="region A">Interactive region</div> … … 126 126 $this->assertTrue( $p->next_tag( $query ) ); 127 127 $this->assertFalse( $p->next_tag( $query ) ); 128 $query = array( 'class_name' => 'screen-reader-text' );129 $p = new WP_HTML_Tag_Processor( $footer );130 $this->assertTrue( $p->next_tag( $query ) );131 $this->assertFalse( $p->next_tag( $query ) );132 128 } 133 129 }
Note: See TracChangeset
for help on using the changeset viewer.