WordPress.org

Make WordPress Core

Ticket #33029: 33029.3.diff

File 33029.3.diff, 1.5 KB (added by adamsilverstein, 4 years ago)
  • wp-admin/js/common.js

     
    385385                var $this = $( this ),
    386386                        $button = $( '<button type="button" class="notice-dismiss"><span class="screen-reader-text"></span></button>' ),
    387387                        btnText = commonL10n.dismiss || '';
     388                        focusedElementAtt = 'data-wp-focused-element';
    388389
    389390                // Ensure plain text
    390391                $button.find( '.screen-reader-text' ).text( btnText );
     
    391392
    392393                $this.append( $button );
    393394
     395                // Note currently focused element before removing focus for click event.
     396                $button.on( 'mousedown.wp-dismiss-notice', function( event ) {
     397                        $( ':focus' ).attr( focusedElementAtt, '' );
     398                });
     399
    394400                $button.on( 'click.wp-dismiss-notice', function( event ) {
    395401                        event.preventDefault();
    396402                        $this.fadeTo( 100 , 0, function() {
     
    398404                                        $(this).remove();
    399405                                });
    400406                        });
     407
     408                        // Restore focus to prevously focused element if available, otherwise
     409                        // restore focus to the content area & move caret to the end of the content.
     410                        var previouslyFocusedElement = $( '[' + focusedElementAtt + ']' );
     411                        if ( previouslyFocusedElement.length > 0 ) {
     412                                previouslyFocusedElement.focus().removeAttr( focusedElementAtt );
     413                        } else {
     414                                tinyMCE.activeEditor.focus();
     415                                tinyMCE.activeEditor.selection.select( tinyMCE.activeEditor.getBody(), true );
     416                                tinyMCE.activeEditor.selection.collapse( false );
     417                        }
    401418                });
     419
     420
    402421        });
    403422
    404423        // Init screen meta