WordPress.org

Make WordPress Core

Ticket #47146: 47146-test.diff

File 47146-test.diff, 6.6 KB (added by afercia, 2 years ago)
  • src/js/media/models/attachments.js

     
    293293                this.reset( [], { silent: true } );
    294294                this.observe( attachments );
    295295
     296                // Used for the search results.
     297                this.trigger( 'attachments:received', this );
    296298                return this;
    297299        },
    298300        /**
     
    332334                        if ( this === attachments.mirroring ) {
    333335                                deferred.resolveWith( this );
    334336                        }
     337
     338                        // Used for the search results.
     339                        attachments.trigger( 'attachments:received', this );
    335340                });
    336341
    337342                return deferred.promise();
  • src/js/media/views/attachments/browser.js

     
    8383                }
    8484
    8585                this.collection.on( 'add remove reset', this.updateContent, this );
     86
     87                // The non-cached or cached attachments query has completed.
     88                this.collection.on( 'attachments:received', this.announceSearchResults, this );
    8689        },
    8790
     91        /**
     92         * Updates the `wp.a11y.speak()` ARIA live region with a message to communicate
     93         * the number of search results to screen reader users. This function is
     94         * debounced because the collection updates multiple times.
     95         *
     96         * @since 5.3.0
     97         *
     98         * @returns {void}
     99         */
     100        announceSearchResults: _.debounce( function() {
     101                var count;
     102
     103                if ( this.collection.mirroring.args.s ) {
     104                        count = this.collection.length;
     105
     106                        if ( 0 === count ) {
     107                                window.console.log( l10n.noMediaTryNewSearch );
     108                                wp.a11y.speak( l10n.noMediaTryNewSearch );
     109                                return;
     110                        }
     111
     112                        if ( this.collection.hasMore() ) {
     113                                window.console.log( l10n.mediaFoundHasMoreResults.replace( '%d', count ) );
     114                                wp.a11y.speak( l10n.mediaFoundHasMoreResults.replace( '%d', count ) );
     115                                return;
     116                        }
     117
     118                        window.console.log( l10n.mediaFound.replace( '%d', count ) );
     119                        wp.a11y.speak( l10n.mediaFound.replace( '%d', count ) );
     120                }
     121        }, 200 ),
     122
    88123        editSelection: function( modal ) {
    89124                // When editing a selection, move focus to the "Return to library" button.
    90125                modal.$( '.media-button-backToLibrary' ).focus();
  • src/js/media/views/focus-manager.js

     
    7171         * provided element and other elements that should not be hidden.
    7272         *
    7373         * The reason why we use `aria-hidden` is that `aria-modal="true"` is buggy
    74          * in Safari 11.1 and support is spotty in other browsers. In the future we
    75          * should consider to remove this helper function and only use `aria-modal="true"`.
     74         * in Safari 11.1 and support is spotty in other browsers. Also, `aria-modal="true"`
     75         * prevents the `wp.a11y.speak()` ARIA live regions to work as they're outside
     76         * of the modal dialog and get hidden from assistive technologies.
    7677         *
    7778         * @since 5.2.3
    7879         *
  • src/js/media/views/search.js

     
    2222        },
    2323
    2424        events: {
    25                 'input':  'search',
    26                 'keyup':  'search'
     25                'input': 'search'
    2726        },
    2827
    2928        /**
     
    3534        },
    3635
    3736        search: _.debounce( function( event ) {
    38                 if ( event.target.value ) {
    39                         this.model.set( 'search', event.target.value );
     37                var searchTerm = event.target.value.trim();
     38
     39                // Trigger the search only after 2 ASCII characters.
     40                if ( searchTerm && searchTerm.length > 1 ) {
     41                        this.model.set( 'search', searchTerm );
    4042                } else {
    41                         this.model.unset('search');
     43                        this.model.unset( 'search' );
    4244                }
    43         }, 300 )
     45        }, 500 )
    4446});
    4547
    4648module.exports = Search;
  • src/wp-includes/media-template.php

     
    187187
    188188        <?php // Template for the media modal. ?>
    189189        <script type="text/html" id="tmpl-media-modal">
    190                 <div tabindex="0" class="<?php echo $class; ?>" role="dialog" aria-modal="true" aria-labelledby="media-frame-title">
     190                <div tabindex="0" class="<?php echo $class; ?>" role="dialog" aria-labelledby="media-frame-title">
    191191                        <# if ( data.hasCloseButton ) { #>
    192192                                <button type="button" class="media-modal-close"><span class="media-modal-icon"><span class="screen-reader-text"><?php _e( 'Close dialog' ); ?></span></span></button>
    193193                        <# } #>
  • src/wp-includes/media.php

     
    38543854                'filterByType'                => __( 'Filter by type' ),
    38553855                'searchMediaLabel'            => __( 'Search Media' ),
    38563856                'searchMediaPlaceholder'      => __( 'Search media items...' ), // placeholder (no ellipsis)
    3857                 'noMedia'                     => __( 'No media files found.' ),
     3857                'mediaFound'                  => __( 'Number of media items found: %d' ),
     3858                'mediaFoundHasMoreResults'    => __( 'Number of media items displayed: %d. Scroll the page for more results.' ),
     3859                'noMedia'                     => __( 'No media items found.' ),
     3860                'noMediaTryNewSearch'         => __( 'No media items found. Try a different search.' ),
    38583861
    38593862                // Library Details
    38603863                'attachmentDetails'           => __( 'Attachment Details' ),
  • src/wp-includes/script-loader.php

     
    15091509
    15101510        // To enqueue media-views or media-editor, call wp_enqueue_media().
    15111511        // Both rely on numerous settings, styles, and templates to operate correctly.
    1512         $scripts->add( 'media-views', "/wp-includes/js/media-views$suffix.js", array( 'utils', 'media-models', 'wp-plupload', 'jquery-ui-sortable', 'wp-mediaelement', 'wp-api-request' ), false, 1 );
     1512        $scripts->add( 'media-views', "/wp-includes/js/media-views$suffix.js", array( 'utils', 'media-models', 'wp-plupload', 'jquery-ui-sortable', 'wp-mediaelement', 'wp-api-request', 'wp-a11y' ), false, 1 );
    15131513        $scripts->add( 'media-editor', "/wp-includes/js/media-editor$suffix.js", array( 'shortcode', 'media-views' ), false, 1 );
    15141514        $scripts->add( 'media-audiovideo', "/wp-includes/js/media-audiovideo$suffix.js", array( 'media-editor' ), false, 1 );
    15151515        $scripts->add( 'mce-view', "/wp-includes/js/mce-view$suffix.js", array( 'shortcode', 'jquery', 'media-views', 'media-audiovideo' ), false, 1 );