Make WordPress Core

Ticket #32715: 32715.7.diff

File 32715.7.diff, 6.7 KB (added by westonruter, 11 years ago)
  • src/wp-admin/css/customize-nav-menus.css

    diff --git src/wp-admin/css/customize-nav-menus.css src/wp-admin/css/customize-nav-menus.css
    index 77a839c..0d11b2d 100644
     
    619619        background: #eee;
    620620}
    621621
    622 #available-menu-items .open .accordion-section-title:after {
     622/* rework the arrow indicator implementation for NVDA bug see #32715 */
     623#available-menu-items .accordion-section-title:after {
     624        content: none !important;
     625}
     626
     627#available-menu-items .accordion-section-title .toggle-indicator {
     628        display: inline-block;
     629        font-size: 20px;
     630        line-height: 1;
     631}
     632
     633#available-menu-items .accordion-section-title .toggle-indicator:after {
     634        content: '\f140';
     635        font: normal 20px/1 'dashicons';
     636        vertical-align: top;
     637        speak: none;
     638        -webkit-font-smoothing: antialiased;
     639        -moz-osx-font-smoothing: grayscale;
     640        text-decoration: none !important;
     641}
     642
     643#available-menu-items .open .accordion-section-title .toggle-indicator:after {
    623644        content: '\f142';
    624645}
    625646
    button.not-a-button { 
    644665#available-menu-items .accordion-section-title button {
    645666        display: block;
    646667        width: 28px;
    647         height: 32px;
     668        height: 35px;
    648669        position: absolute;
    649670        top: 5px;
    650671        right: 5px;
     672        cursor: pointer;
    651673}
    652674
    653675#available-menu-items .accordion-section-title button:focus {
    button.not-a-button { 
    656678}
    657679
    658680#available-menu-items .accordion-section-title .no-items,
    659 #available-menu-items .cannot-expand .accordion-section-title .spinner {
     681#available-menu-items .cannot-expand .accordion-section-title .spinner,
     682#available-menu-items .cannot-expand .accordion-section-title > button {
    660683        display: none;
    661684}
    662685
  • src/wp-admin/js/accordion.js

    diff --git src/wp-admin/js/accordion.js src/wp-admin/js/accordion.js
    index 1769d27..bdd21ba 100644
     
    5353         */
    5454        function accordionSwitch ( el ) {
    5555                var section = el.closest( '.accordion-section' ),
     56                        sectionToggleControl = section.find( '[aria-expanded]' ).eq( 0 ),
    5657                        siblings = section.closest( '.accordion-container' ).find( '.open' ),
     58                        siblingsToggleControl = siblings.find( '[aria-expanded]' ).eq( 0 ),
    5759                        content = section.find( '.accordion-section-content' );
    5860
    5961                // This section has no content and cannot be expanded.
     
    6567                        section.toggleClass( 'open' );
    6668                        content.toggle( true ).slideToggle( 150 );
    6769                } else {
     70                        siblingsToggleControl.attr( 'aria-expanded', 'false' );
    6871                        siblings.removeClass( 'open' );
    6972                        siblings.find( '.accordion-section-content' ).show().slideUp( 150 );
    7073                        content.toggle( false ).slideToggle( 150 );
    7174                        section.toggleClass( 'open' );
    7275                }
     76
     77                // If there's an element with an aria-expanded attribute, assume it's a toggle control and toggle the aria-expanded value.
     78                if ( sectionToggleControl ) {
     79                        sectionToggleControl.attr( 'aria-expanded', sectionToggleControl.attr( 'aria-expanded' ) === 'false' ? 'true' : 'false' );
     80                }
    7381        }
    7482
    7583})(jQuery);
  • src/wp-admin/js/customize-nav-menus.js

    diff --git src/wp-admin/js/customize-nav-menus.js src/wp-admin/js/customize-nav-menus.js
    index b322bc0..27bff28 100644
     
    173173
    174174                // Search input change handler.
    175175                search: function( event ) {
     176                        var $searchSection = $( '#available-menu-items-search' ),
     177                                $openSections = $( '#available-menu-items .accordion-section.open' );
     178
    176179                        if ( ! event ) {
    177180                                return;
    178181                        }
    179182                        // Manual accordion-opening behavior.
    180                         if ( this.searchTerm && ! $( '#available-menu-items-search' ).hasClass( 'open' ) ) {
    181                                 $( '#available-menu-items .accordion-section-content' ).slideUp( 'fast' );
    182                                 $( '#available-menu-items-search .accordion-section-content' ).slideDown( 'fast' );
    183                                 $( '#available-menu-items .accordion-section.open' ).removeClass( 'open' );
    184                                 $( '#available-menu-items-search' ).addClass( 'open' );
     183                        if ( this.searchTerm && ! $searchSection.hasClass( 'open' ) ) {
     184                                $openSections.find( '.accordion-section-content' ).slideUp( 'fast' );
     185                                $searchSection.find( '.accordion-section-content' ).slideDown( 'fast' );
     186                                $openSections.find( '[aria-expanded]' ).eq( 0 ).attr( 'aria-expanded', 'false' );
     187                                $openSections.removeClass( 'open' );
     188                                $searchSection.addClass( 'open' );
    185189                        }
    186190                        if ( '' === event.target.value ) {
    187                                 $( '#available-menu-items-search' ).removeClass( 'open' );
     191                                $searchSection.removeClass( 'open' );
    188192                        }
    189193                        if ( this.searchTerm === event.target.value ) {
    190194                                return;
  • src/wp-includes/class-wp-customize-nav-menus.php

    diff --git src/wp-includes/class-wp-customize-nav-menus.php src/wp-includes/class-wp-customize-nav-menus.php
    index ce1a9be..a3281d4 100644
    final class WP_Customize_Nav_Menus { 
    721721                                <ul class="accordion-section-content" data-type="search"></ul>
    722722                        </div>
    723723                        <div id="new-custom-menu-item" class="accordion-section">
    724                                 <h4 class="accordion-section-title"><?php _e( 'Custom Links' ); ?><button type="button" class="not-a-button"><span class="screen-reader-text"><?php _e( 'Toggle' ); ?></span></button></h4>
     724                                <h4 class="accordion-section-title" role="presentation"><?php _e( 'Custom Links' ); ?> <button type="button" class="not-a-button" aria-expanded="false"><span class="screen-reader-text"><?php _e( 'Toggle section: Custom Links' ); ?></span><span class="toggle-indicator" aria-hidden="true"></span></button></h4>
    725725                                <div class="accordion-section-content">
    726726                                        <input type="hidden" value="custom" id="custom-menu-item-type" name="menu-item[-1][menu-item-type]" />
    727727                                        <p id="menu-item-url-wrap">
    final class WP_Customize_Nav_Menus { 
    750750                                $id = sprintf( 'available-menu-items-%s-%s', $available_item_type['type'], $available_item_type['object'] );
    751751                                ?>
    752752                                <div id="<?php echo esc_attr( $id ); ?>" class="accordion-section">
    753                                         <h4 class="accordion-section-title"><?php echo esc_html( $available_item_type['title'] ); ?> <span class="no-items"><?php _e( 'No items' ); ?></span><span class="spinner"></span> <button type="button" class="not-a-button"><span class="screen-reader-text"><?php _e( 'Toggle' ); ?></span></button></h4>
     753                                        <h4 class="accordion-section-title" role="presentation"><?php echo esc_html( $available_item_type['title'] ); ?> <span class="spinner"></span> <span class="no-items"><?php _e( 'No items' ); ?></span> <button type="button" class="not-a-button" aria-expanded="false"><span class="screen-reader-text"><?php printf( 'Toggle section: %s', esc_html( $available_item_type['title'] ) ); ?></span><span class="toggle-indicator" aria-hidden="true"></span></button></h4>
    754754                                        <ul class="accordion-section-content" data-type="<?php echo esc_attr( $available_item_type['type'] ); ?>" data-object="<?php echo esc_attr( $available_item_type['object'] ); ?>"></ul>
    755755                                </div>
    756756                                <?php