Make WordPress Core

Changeset 58455

Timestamp:
06/21/2024 06:15:50 PM (3 weeks ago)
Author:
joedolson
Message:

Administration: A11y: Add role="alert" on JS injected admin notices.

Add the attribute role="alert" on 12 instances of admin notices that are injected into the DOM using JavaScript. The role="alert" attribute allows screen readers to recognize the addition to the DOM and announce the errors to users.

Props afercia, cyrus11, rcreators, joedolson.
Fixes #47111.

Location:
trunk/src/js/_enqueues
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/js/_enqueues/admin/privacy-tools.js

    r50547 r58455  
    4848        $requestRow.after( function() {
    4949            return '<tr class="' + resultRowClasses + '"><th colspan="5">' +
    50                 '<div class="notice inline notice-alt ' + classes + '">' +
     50                '<div class="notice inline notice-alt ' + classes + '">' +
    5151                '<p>' + summaryMessage + '</p>' +
    5252                itemList +
  • trunk/src/js/_enqueues/admin/user-profile.js

    r58145 r58455  
    152152     */
    153153    function addInlineNotice( $this, success, message ) {
    154         var resultDiv = $( '<div />' );
     154        var resultDiv = $( '<div />', {
     155            role: 'alert'
     156        } );
    155157
    156158        // Set up the notice div.
     
    475477            $this.prop( 'disabled', true );
    476478            $this.siblings( '.notice' ).remove();
    477             $this.before( '<div class="notice notice-success inline"><p>' + response.message + '</p></div>' );
     479            $this.before( '<div class="notice notice-success inline"><p>' + response.message + '</p></div>' );
    478480        }).fail( function( response ) {
    479481            $this.siblings( '.notice' ).remove();
    480             $this.before( '<div class="notice notice-error inline"><p>' + response.message + '</p></div>' );
     482            $this.before( '<div class="notice notice-error inline"><p>' + response.message + '</p></div>' );
    481483        });
    482484
  • trunk/src/js/_enqueues/lib/ajax-response.js

    r53709 r58455  
    5454            } );
    5555            if ( err.length ) {
    56                 re.html( '<div class="notice notice-error">' + err + '</div>' );
     56                re.html( '<div class="notice notice-error">' + err + '</div>' );
    5757                wp.a11y.speak( err );
    5858            } else if ( noticeMessage.length ) {
    59                 re.html( '<div class="notice notice-success is-dismissible"><p>' + noticeMessage + '</p></div>');
     59                re.html( '<div class="notice notice-success is-dismissible"><p>' + noticeMessage + '</p></div>');
    6060                jQuery(document).trigger( 'wp-updates-notice-added' );
    6161                wp.a11y.speak( noticeMessage );
     
    6565        if ( isNaN( x ) ) {
    6666            wp.a11y.speak( x );
    67             return ! re.html( '<div class="notice notice-error"><p>' + x + '</p></div>' );
     67            return ! re.html( '<div class="notice notice-error"><p>' + x + '</p></div>' );
    6868        }
    6969        x = parseInt( x, 10 );
    7070        if ( -1 === x ) {
    7171            wp.a11y.speak( wpAjax.noPerm );
    72             return ! re.html( '<div class="notice notice-error"><p>' + wpAjax.noPerm + '</p></div>' );
     72            return ! re.html( '<div class="notice notice-error"><p>' + wpAjax.noPerm + '</p></div>' );
    7373        } else if ( 0 === x ) {
    7474            wp.a11y.speak( wpAjax.broken );
    75             return ! re.html( '<div class="notice notice-error"><p>' + wpAjax.broken  + '</p></div>' );
     75            return ! re.html( '<div class="notice notice-error"><p>' + wpAjax.broken  + '</p></div>' );
    7676        }
    7777        return true;
  • trunk/src/js/_enqueues/wp/customize/widgets.js

    r57987 r58455  
    16241624                // @todo This should use the Notifications API introduced to panels. See <https://core.trac.wordpress.org/ticket/38794>.
    16251625                noticeContainer = $( '<div></div>', {
    1626                     'class': 'no-widget-areas-rendered-notice'
     1626                    'class': 'no-widget-areas-rendered-notice',
     1627                    'role': 'alert'
    16271628                });
    16281629                panelMetaContainer.append( noticeContainer );
  • trunk/src/js/_enqueues/wp/updates.js

    r58257 r58455  
    876876        $card
    877877            .addClass( 'plugin-card-update-failed' )
    878             .append( '<div class="notice notice-error notice-alt is-dismissible"><p>' + errorMessage + '</p></div>' );
     878            .append( '<div class="notice notice-error notice-alt is-dismissible"><p>' + errorMessage + '</p></div>' );
    879879
    880880        $card.on( 'click', '.notice.is-dismissible .notice-dismiss', function() {
     
    22612261        // Remove any existing error.
    22622262        $filesystemForm.find( '.notice' ).remove();
    2263         $filesystemForm.find( '#request-filesystem-credentials-title' ).after( '<div class="notice notice-alt notice-error"><p>' + message + '</p></div>' );
     2263        $filesystemForm.find( '#request-filesystem-credentials-title' ).after( '<div class="notice notice-alt notice-error"><p>' + message + '</p></div>' );
    22642264    };
    22652265
  • trunk/src/js/_enqueues/wp/widgets/custom-html.js

    r51701 r58455  
    149149                }
    150150            } else if ( 0 !== errorAnnotations.length ) {
    151                 errorNotice = $( '<div class="inline notice notice-error notice-alt"></div>' );
     151                errorNotice = $( '<div class="inline notice notice-error notice-alt"></div>' );
    152152                errorNotice.append( $( '<p></p>', {
    153153                    text: message
  • trunk/src/js/_enqueues/wp/widgets/media.js

    r51701 r58455  
    159159                        } else {
    160160                            if ( ! noticeContainer.length ) {
    161                                 noticeContainer = $( '<div class="media-widget-embed-notice notice notice-error notice-alt"></div>' );
     161                                noticeContainer = $( '<div class="media-widget-embed-notice notice notice-error notice-alt"></div>' );
    162162                                noticeContainer.hide();
    163163                                embedLinkView.views.parent.$el.prepend( noticeContainer );
Note: See TracChangeset for help on using the changeset viewer.