<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[40359] trunk/src: Accessibility: Improve the Media Library inline uploader accessibility.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/40359">40359</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/40359","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>afercia</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2017-03-31 17:37:58 +0000 (Fri, 31 Mar 2017)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Accessibility: Improve the Media Library inline uploader accessibility.

For better accessibility, expandable panels should be placed immediately after
the control that expands them. This change moves the Media Library inline
uploader up, right after the "Add New" button, also introducing consistency with
the Plugin and Theme uploaders.
Adds a proper ARIA role on the button and an `aria-expanded` attribute to give
better feedback to assistive technologies users about the uploader's expanded state.
Improves the focus handling when closing the uploader, improves the focus style
and color contrast ratio of the uploader "close" button.

Props mantismamita, karmatosed, adamsilverstein, afercia.
Fixes <a href="https://core.trac.wordpress.org/ticket/37188">#37188</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcwpadmincssmediacss">trunk/src/wp-admin/css/media.css</a></li>
<li><a href="#trunksrcwpadminuploadphp">trunk/src/wp-admin/upload.php</a></li>
<li><a href="#trunksrcwpincludescssmediaviewscss">trunk/src/wp-includes/css/media-views.css</a></li>
<li><a href="#trunksrcwpincludesjsmediaviewsattachmentsbrowserjs">trunk/src/wp-includes/js/media/views/attachments/browser.js</a></li>
<li><a href="#trunksrcwpincludesjsmediaviewsframemanagejs">trunk/src/wp-includes/js/media/views/frame/manage.js</a></li>
<li><a href="#trunksrcwpincludesjsmediaviewsuploaderinlinejs">trunk/src/wp-includes/js/media/views/uploader/inline.js</a></li>
<li><a href="#trunksrcwpincludesjsmediagridjs">trunk/src/wp-includes/js/media-grid.js</a></li>
<li><a href="#trunksrcwpincludesjsmediaviewsjs">trunk/src/wp-includes/js/media-views.js</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcwpadmincssmediacss"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-admin/css/media.css</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-admin/css/media.css  2017-03-31 16:50:42 UTC (rev 40358)
+++ trunk/src/wp-admin/css/media.css    2017-03-31 17:37:58 UTC (rev 40359)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -469,7 +469,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> .upload-php .mode-grid .media-sidebar {
</span><span class="cx" style="display: block; padding: 0 10px">        position: relative;
</span><span class="cx" style="display: block; padding: 0 10px">        width: auto;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        margin-bottom: 16px;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ margin-top: 12px;
</ins><span class="cx" style="display: block; padding: 0 10px">         padding: 0 16px;
</span><span class="cx" style="display: block; padding: 0 10px">        border-left: 4px solid #dd3d36;
</span><span class="cx" style="display: block; padding: 0 10px">        -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -526,7 +526,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        left: auto;
</span><span class="cx" style="display: block; padding: 0 10px">        bottom: auto;
</span><span class="cx" style="display: block; padding: 0 10px">        padding-top: 0;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        margin-top: 0;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ margin-top: 20px;
</ins><span class="cx" style="display: block; padding: 0 10px">         border: 4px dashed #b4b9be;
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="trunksrcwpadminuploadphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-admin/upload.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-admin/upload.php     2017-03-31 16:50:42 UTC (rev 40358)
+++ trunk/src/wp-admin/upload.php       2017-03-31 17:37:58 UTC (rev 40359)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -77,7 +77,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                <?php
</span><span class="cx" style="display: block; padding: 0 10px">                if ( current_user_can( 'upload_files' ) ) { ?>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        <a href="<?php echo admin_url( 'media-new.php' ); ?>" class="page-title-action"><?php echo esc_html_x( 'Add New', 'file' ); ?></a><?php
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 <a href="<?php echo admin_url( 'media-new.php' ); ?>" class="page-title-action aria-button-if-js"><?php echo esc_html_x( 'Add New', 'file' ); ?></a><?php
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">                ?>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="trunksrcwpincludescssmediaviewscss"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/css/media-views.css</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/css/media-views.css 2017-03-31 16:50:42 UTC (rev 40358)
+++ trunk/src/wp-includes/css/media-views.css   2017-03-31 17:37:58 UTC (rev 40359)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1133,22 +1133,31 @@
</span><span class="cx" style="display: block; padding: 0 10px">        border: 0;
</span><span class="cx" style="display: block; padding: 0 10px">        cursor: pointer;
</span><span class="cx" style="display: block; padding: 0 10px">        height: 48px;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        outline: none;
+       padding: 0;
</ins><span class="cx" style="display: block; padding: 0 10px">         position: absolute;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        right: 0;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ right: 2px;
</ins><span class="cx" style="display: block; padding: 0 10px">         text-align: center;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        top: 0;
-       width: 50px;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ top: 2px;
+       width: 48px;
</ins><span class="cx" style="display: block; padding: 0 10px">         z-index: 1;
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> .uploader-inline .close:before {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        font: normal 30px/50px dashicons !important;
-       color: #72777c;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ font: normal 30px/1 dashicons !important;
+       color: #555d66;
</ins><span class="cx" style="display: block; padding: 0 10px">         display: inline-block;
</span><span class="cx" style="display: block; padding: 0 10px">        content: "\f335";
</span><span class="cx" style="display: block; padding: 0 10px">        font-weight: 300;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        margin-top: 1px;
</ins><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+.uploader-inline .close:focus {
+       outline: 1px solid  #5b9dd9;
+       -webkit-box-shadow: 0 0 3px rgba( 0, 115, 170, .8 );
+       box-shadow: 0 0 3px rgba( 0, 115, 170, .8 );
+}
+
</ins><span class="cx" style="display: block; padding: 0 10px"> .attachments-browser.hide-sidebar .attachments,
</span><span class="cx" style="display: block; padding: 0 10px"> .attachments-browser.hide-sidebar .uploader-inline {
</span><span class="cx" style="display: block; padding: 0 10px">        right: 0;
</span></span></pre></div>
<a id="trunksrcwpincludesjsmediaviewsattachmentsbrowserjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/js/media/views/attachments/browser.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/js/media/views/attachments/browser.js       2017-03-31 16:50:42 UTC (rev 40358)
+++ trunk/src/wp-includes/js/media/views/attachments/browser.js 2017-03-31 17:37:58 UTC (rev 40359)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -40,17 +40,33 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                this.controller.on( 'toggle:upload:attachment', this.toggleUploader, this );
</span><span class="cx" style="display: block; padding: 0 10px">                this.controller.on( 'edit:selection', this.editSelection );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                this.createToolbar();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // In the Media Library, the sidebar is used to display errors before the attachments grid.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( this.options.sidebar && 'errors' === this.options.sidebar ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        this.createSidebar();
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               /*
+                * For accessibility reasons, place the Inline Uploader before other sections.
+                * This way, in the Media Library, it's right after the Add New button, see ticket #37188.
+                */
</ins><span class="cx" style="display: block; padding: 0 10px">                 this.createUploader();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               /*
+                * Create a multi-purpose toolbar. Used as main toolbar in the Media Library
+                * and also for other things, for example the "Drag and drop to reorder" and
+                * "Suggested dimensions" info in the media modal.
+                */
+               this.createToolbar();
+
+               // Create the list of attachments.
</ins><span class="cx" style="display: block; padding: 0 10px">                 this.createAttachments();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // For accessibility reasons, place the normal sidebar after the attachments, see ticket #36909.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( this.options.sidebar && 'errors' !== this.options.sidebar ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        this.createSidebar();
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 this.updateContent();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! this.options.sidebar || 'errors' === this.options.sidebar ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -343,7 +359,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        canClose:   this.controller.isModeActive( 'grid' )
</span><span class="cx" style="display: block; padding: 0 10px">                });
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                this.uploader.hide();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         this.uploader.$el.addClass( 'hidden' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 this.views.add( this.uploader );
</span><span class="cx" style="display: block; padding: 0 10px">        },
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="trunksrcwpincludesjsmediaviewsframemanagejs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/js/media/views/frame/manage.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/js/media/views/frame/manage.js      2017-03-31 16:50:42 UTC (rev 40358)
+++ trunk/src/wp-includes/js/media/views/frame/manage.js        2017-03-31 17:37:58 UTC (rev 40359)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -38,8 +38,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                this.$body = $( document.body );
</span><span class="cx" style="display: block; padding: 0 10px">                this.$window = $( window );
</span><span class="cx" style="display: block; padding: 0 10px">                this.$adminBar = $( '#wpadminbar' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // Store the Add New button for later reuse in wp.media.view.UploaderInline.
+               this.$uploaderToggler = $( '.page-title-action' )
+                       .attr( 'aria-expanded', 'false' )
+                       .on( 'click', _.bind( this.addNewClickHandler, this ) );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 this.$window.on( 'scroll resize', _.debounce( _.bind( this.fixPosition, this ), 15 ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $( document ).on( 'click', '.page-title-action', _.bind( this.addNewClickHandler, this ) );
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Ensure core and media grid view UI is enabled.
</span><span class="cx" style="display: block; padding: 0 10px">                this.$el.addClass('wp-core-ui');
</span></span></pre></div>
<a id="trunksrcwpincludesjsmediaviewsuploaderinlinejs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/js/media/views/uploader/inline.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/js/media/views/uploader/inline.js   2017-03-31 16:50:42 UTC (rev 40358)
+++ trunk/src/wp-includes/js/media/views/uploader/inline.js     2017-03-31 17:37:58 UTC (rev 40359)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -119,9 +119,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">        },
</span><span class="cx" style="display: block; padding: 0 10px">        show: function() {
</span><span class="cx" style="display: block; padding: 0 10px">                this.$el.removeClass( 'hidden' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                if ( this.controller.$uploaderToggler.length ) {
+                       this.controller.$uploaderToggler.attr( 'aria-expanded', 'true' );
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">         },
</span><span class="cx" style="display: block; padding: 0 10px">        hide: function() {
</span><span class="cx" style="display: block; padding: 0 10px">                this.$el.addClass( 'hidden' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                if ( this.controller.$uploaderToggler.length ) {
+                       this.controller.$uploaderToggler
+                               .attr( 'aria-expanded', 'false' )
+                               // Move focus back to the toggle button when closing the uploader.
+                               .focus();
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> });
</span></span></pre></div>
<a id="trunksrcwpincludesjsmediagridjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/js/media-grid.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/js/media-grid.js    2017-03-31 16:50:42 UTC (rev 40358)
+++ trunk/src/wp-includes/js/media-grid.js      2017-03-31 17:37:58 UTC (rev 40359)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -623,8 +623,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                this.$body = $( document.body );
</span><span class="cx" style="display: block; padding: 0 10px">                this.$window = $( window );
</span><span class="cx" style="display: block; padding: 0 10px">                this.$adminBar = $( '#wpadminbar' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // Store the Add New button for later reuse in wp.media.view.UploaderInline.
+               this.$uploaderToggler = $( '.page-title-action' )
+                       .attr( 'aria-expanded', 'false' )
+                       .on( 'click', _.bind( this.addNewClickHandler, this ) );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 this.$window.on( 'scroll resize', _.debounce( _.bind( this.fixPosition, this ), 15 ) );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $( document ).on( 'click', '.page-title-action', _.bind( this.addNewClickHandler, this ) );
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Ensure core and media grid view UI is enabled.
</span><span class="cx" style="display: block; padding: 0 10px">                this.$el.addClass('wp-core-ui');
</span></span></pre></div>
<a id="trunksrcwpincludesjsmediaviewsjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/js/media-views.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/js/media-views.js   2017-03-31 16:50:42 UTC (rev 40358)
+++ trunk/src/wp-includes/js/media-views.js     2017-03-31 17:37:58 UTC (rev 40359)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3771,17 +3771,33 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                this.controller.on( 'toggle:upload:attachment', this.toggleUploader, this );
</span><span class="cx" style="display: block; padding: 0 10px">                this.controller.on( 'edit:selection', this.editSelection );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                this.createToolbar();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // In the Media Library, the sidebar is used to display errors before the attachments grid.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( this.options.sidebar && 'errors' === this.options.sidebar ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        this.createSidebar();
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               /*
+                * For accessibility reasons, place the Inline Uploader before other sections.
+                * This way, in the Media Library, it's right after the Add New button, see ticket #37188.
+                */
</ins><span class="cx" style="display: block; padding: 0 10px">                 this.createUploader();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               /*
+                * Create a multi-purpose toolbar. Used as main toolbar in the Media Library
+                * and also for other things, for example the "Drag and drop to reorder" and
+                * "Suggested dimensions" info in the media modal.
+                */
+               this.createToolbar();
+
+               // Create the list of attachments.
</ins><span class="cx" style="display: block; padding: 0 10px">                 this.createAttachments();
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // For accessibility reasons, place the normal sidebar after the attachments, see ticket #36909.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( this.options.sidebar && 'errors' !== this.options.sidebar ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        this.createSidebar();
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
</ins><span class="cx" style="display: block; padding: 0 10px">                 this.updateContent();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! this.options.sidebar || 'errors' === this.options.sidebar ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4074,7 +4090,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        canClose:   this.controller.isModeActive( 'grid' )
</span><span class="cx" style="display: block; padding: 0 10px">                });
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                this.uploader.hide();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         this.uploader.$el.addClass( 'hidden' );
</ins><span class="cx" style="display: block; padding: 0 10px">                 this.views.add( this.uploader );
</span><span class="cx" style="display: block; padding: 0 10px">        },
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8210,9 +8226,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">        },
</span><span class="cx" style="display: block; padding: 0 10px">        show: function() {
</span><span class="cx" style="display: block; padding: 0 10px">                this.$el.removeClass( 'hidden' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                if ( this.controller.$uploaderToggler.length ) {
+                       this.controller.$uploaderToggler.attr( 'aria-expanded', 'true' );
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">         },
</span><span class="cx" style="display: block; padding: 0 10px">        hide: function() {
</span><span class="cx" style="display: block; padding: 0 10px">                this.$el.addClass( 'hidden' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                if ( this.controller.$uploaderToggler.length ) {
+                       this.controller.$uploaderToggler
+                               .attr( 'aria-expanded', 'false' )
+                               // Move focus back to the toggle button when closing the uploader.
+                               .focus();
+               }
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> });
</span></span></pre>
</div>
</div>

</body>
</html>