Make WordPress Core

Changeset 29321


Ignore:
Timestamp:
07/29/2014 03:15:34 AM (10 years ago)
Author:
azaozz
Message:

wpLink: add keyboard navigation, improve accessibility. Props afercia, fixes #28897.

Location:
trunk/src/wp-includes
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/class-wp-editor.php

    r29317 r29321  
    13771377        <div id="link-modal-title">
    13781378            <?php _e( 'Insert/edit link' ) ?>
    1379             <div id="wp-link-close" tabindex="0"></div>
     1379            <button id="wp-link-close"><span class="screen-reader-text"><?php _e( 'Close' ); ?></span></button>
    13801380        </div>
    13811381        <div id="link-selector">
     
    13921392                </div>
    13931393            </div>
    1394             <p class="howto" id="wp-link-search-toggle"><?php _e( 'Or link to existing content' ); ?></p>
     1394            <p class="howto"><a href="#" id="wp-link-search-toggle"><?php _e( 'Or link to existing content' ); ?></a></p>
    13951395            <div id="search-panel">
    13961396                <div class="link-search-wrapper">
     
    14011401                    </label>
    14021402                </div>
    1403                 <div id="search-results" class="query-results">
     1403                <div id="search-results" class="query-results" tabindex="0">
    14041404                    <ul></ul>
    14051405                    <div class="river-waiting">
     
    14071407                    </div>
    14081408                </div>
    1409                 <div id="most-recent-results" class="query-results">
    1410                     <div class="query-notice"><em><?php _e( 'No search term specified. Showing recent items.' ); ?></em></div>
     1409                <div id="most-recent-results" class="query-results" tabindex="0">
     1410                    <div class="query-notice" id="query-notice-message">
     1411                        <em class="query-notice-default"><?php _e( 'No search term specified. Showing recent items.' ); ?></em>
     1412                        <em class="query-notice-hint screen-reader-text"><?php _e( 'Search or use up and down arrow keys to select an item.' ); ?></em>
     1413                    </div>
    14111414                    <ul></ul>
    14121415                    <div class="river-waiting">
     
    14171420        </div>
    14181421        <div class="submitbox">
     1422            <div id="wp-link-cancel">
     1423                <a class="submitdelete deletion" href="#"><?php _e( 'Cancel' ); ?></a>
     1424            </div>
    14191425            <div id="wp-link-update">
    14201426                <input type="submit" value="<?php esc_attr_e( 'Add Link' ); ?>" class="button button-primary" id="wp-link-submit" name="wp-link-submit">
    1421             </div>
    1422             <div id="wp-link-cancel">
    1423                 <a class="submitdelete deletion" href="#"><?php _e( 'Cancel' ); ?></a>
    14241427            </div>
    14251428        </div>
  • trunk/src/wp-includes/css/editor.css

    r29231 r29321  
    8080
    8181.mce-textbox,
    82 .mce-checkbox i.mce-i-checkbox {
     82.mce-checkbox i.mce-i-checkbox,
     83#wp-link .query-results {
    8384    border: 1px solid #ddd;
    8485    -webkit-border-radius: 0;
     
    8687    -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,0.07);
    8788    box-shadow: inset 0 1px 2px rgba(0,0,0,0.07);
    88     -webkit-transition: .05s border-color ease-in-out;
    89     transition: .05s border-color ease-in-out;
     89    -webkit-transition: .05s all ease-in-out;
     90    transition: .05s all ease-in-out;
    9091}
    9192
    9293.mce-textbox:focus,
    9394.mce-textbox.mce-focus,
    94 .mce-checkbox:focus i.mce-i-checkbox {
     95.mce-checkbox:focus i.mce-i-checkbox,
     96#wp-link .query-results:focus {
    9597    border-color: #5b9dd9;
    9698    -webkit-box-shadow: 0 0 2px rgba(30,140,190,0.8);
     
    10621064#wp-link-close {
    10631065    color: #666;
    1064     cursor: pointer;
    10651066    padding: 0;
    10661067    position: absolute;
     
    10701071    height: 36px;
    10711072    text-align: center;
     1073    background: none;
     1074    border: none;
     1075    cursor: pointer;
    10721076}
    10731077
     
    10881092}
    10891093
     1094#wp-link-close:focus {
     1095    outline: none;
     1096    -webkit-box-shadow:
     1097        0 0 0 1px #5b9dd9,
     1098        0 0 2px 1px rgba(30, 140, 190, .8);
     1099    box-shadow:
     1100        0 0 0 1px #5b9dd9,
     1101        0 0 2px 1px rgba(30, 140, 190, .8);
     1102}
     1103
    10901104#link-selector {
    10911105    padding: 0 16px 50px;
     
    11341148#wp-link p.howto {
    11351149    margin: 3px 0;
     1150}
     1151
     1152#wp-link p.howto a {
     1153    text-decoration: none;
     1154    color: inherit;
    11361155}
    11371156
     
    11991218}
    12001219
    1201 #wp-link li,
    1202 #wp-link .query-notice {
     1220#wp-link li {
    12031221    clear: both;
    12041222    margin-bottom: 0;
    12051223    border-bottom: 1px solid #f1f1f1;
    12061224    color: #333;
    1207     padding: 4px 6px;
     1225    padding: 4px 6px 4px 10px;
    12081226    cursor: pointer;
    12091227    position: relative;
     1228}
     1229
     1230#wp-link .query-notice {
     1231    padding: 0;
     1232    border-bottom: 1px solid #dfdfdf;
     1233    background-color: #f7fcfe;
     1234    color: #000;
     1235}
     1236
     1237#wp-link .query-notice .query-notice-default,
     1238#wp-link .query-notice .query-notice-hint {
     1239    display: block;
     1240    padding: 6px;
     1241    border-left: 4px solid #2ea2cc;
     1242}
     1243
     1244#wp-link .unselectable.no-matches-found {
     1245    padding: 0;
     1246    border-bottom: 1px solid #dfdfdf;
     1247    background-color: #fef7f1;
     1248}
     1249
     1250#wp-link .no-matches-found .item-title {
     1251    display: block;
     1252    padding: 6px;
     1253    border-left: 4px solid #d54e21;
     1254}
     1255
     1256#wp-link .query-results em {
     1257    font-style: normal;
    12101258}
    12111259
     
    12861334#wp-link-cancel {
    12871335    line-height: 25px;
     1336    float: left;
    12881337}
    12891338
  • trunk/src/wp-includes/js/wplink.js

    r29301 r29321  
    3232            rivers.elements = inputs.dialog.find( '.query-results' );
    3333
     34            // Get search notice text
     35            inputs.queryNotice = $( '#query-notice-message' );
     36            inputs.queryNoticeTextDefault = inputs.queryNotice.find( '.query-notice-default' );
     37            inputs.queryNoticeTextHint = inputs.queryNotice.find( '.query-notice-hint' );
     38
    3439            // Bind event handlers
    3540            inputs.dialog.keydown( wpLink.keydown );
     
    4449            });
    4550
    46             $( '#wp-link-search-toggle' ).click( wpLink.toggleInternalLinking );
     51            $( '#wp-link-search-toggle' ).on( 'click', wpLink.toggleInternalLinking );
    4752
    4853            rivers.elements.on( 'river-select', wpLink.updateFields );
     54
     55            // Display 'hint' message when search field or 'query-results' box are focused
     56            inputs.search.add( rivers.elements ).on( 'focus.wplink', function() {
     57                inputs.queryNoticeTextDefault.hide();
     58                inputs.queryNoticeTextHint.removeClass( 'screen-reader-text' ).show();
     59            } ).on( 'blur.wplink', function() {
     60                inputs.queryNoticeTextDefault.show();
     61                inputs.queryNoticeTextHint.addClass( 'screen-reader-text' ).hide();
     62            } );
    4963
    5064            inputs.search.keyup( function() {
     
    336350                id = event.target.id;
    337351
     352                // wp-link-submit must always be the last focusable element in the dialog.
     353                // following focusable elements will be skipped on keyboard navigation.
    338354                if ( id === 'wp-link-submit' && ! event.shiftKey ) {
    339355                    inputs.close.focus();
     
    392408        },
    393409
    394         toggleInternalLinking: function() {
     410        toggleInternalLinking: function( event ) {
    395411            var visible = inputs.wrap.hasClass( 'search-panel-visible' );
    396412
     
    398414            setUserSetting( 'wplink', visible ? '0' : '1' );
    399415            inputs[ ! visible ? 'search' : 'url' ].focus();
     416            event.preventDefault();
    400417        }
    401418    };
     
    507524            if ( ! results ) {
    508525                if ( firstPage ) {
    509                     list += '<li class="unselectable"><span class="item-title"><em>' +
     526                    list += '<li class="unselectable no-matches-found"><span class="item-title"><em>' +
    510527                        wpLinkL10n.noMatchesFound + '</em></span></li>';
    511528                }
Note: See TracChangeset for help on using the changeset viewer.