Merge "tablesorter: Keyboard accessibility for sort headers."
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 23 Jul 2013 13:21:58 +0000 (13:21 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 23 Jul 2013 13:21:58 +0000 (13:21 +0000)
1  2 
resources/jquery/jquery.tablesorter.js

                                                table.config.parsers = buildParserCache( table, $headers );
                                        }
  
 -                                      // as each header can span over multiple columns (using colspan=N),
 -                                      // we have to bidirectionally map headers to their columns and columns to their headers
 -                                      headerToColumns = [];
 -                                      columnToHeader = [];
 -                                      colspanOffset = 0;
 -                                      $headers.each( function ( headerIndex ) {
 -                                              var columns = [];
 -                                              for ( var i = 0; i < this.colSpan; i++ ) {
 -                                                      columnToHeader[ colspanOffset + i ] = headerIndex;
 -                                                      columns.push( colspanOffset + i );
 -                                              }
 -
 -                                              headerToColumns[ headerIndex ] = columns;
 -                                              colspanOffset += this.colSpan;
 -                                      } );
 -
                                        // Apply event handling to headers
                                        // this is too big, perhaps break it out?
-                                       $headers.filter( ':not(.unsortable)' ).click( function ( e ) {
-                                               if ( e.target.nodeName.toLowerCase() === 'a' ) {
-                                                       // The user clicked on a link inside a table header
-                                                       // Do nothing and let the default link click action continue
+                                       $headers.filter( ':not(.unsortable)' ).on( 'keypress click', function ( e ) {
+                                               if ( e.type === 'click' && e.target.nodeName.toLowerCase() === 'a' ) {
+                                                       // The user clicked on a link inside a table header.
+                                                       // Do nothing and let the default link click action continue.
+                                                       return true;
+                                               }
+                                               if ( e.type === 'keypress' && e.which !== 13 ) {
+                                                       // Only handle keypresses on the "Enter" key.
                                                        return true;
                                                }