Make WordPress Core

Ticket #58756: 58756.3.diff

File 58756.3.diff, 5.2 KB (added by joedolson, 2 years ago)

Follow up to close menu when focus elsewhere

  • src/js/_enqueues/lib/image-edit.js

     
    245245        },
    246246
    247247        /**
     248         * Observes whether the popup should remain open based on focus position.
     249         *
     250         * @since 6.4.0
     251         *
     252         * @memberof imageEdit
     253         *
     254         * @param {HTMLElement} el The activated control element.
     255         *
     256         * @return {boolean} Always returns false.
     257         */
     258        monitorPopup : function(el) {
     259                var $el     = $( el );
     260                var $parent = document.querySelector( '.imgedit-rotate-menu-container' );
     261                var $toggle = document.querySelector( '.imgedit-rotate-menu-container .imgedit-rotate' );
     262
     263                setTimeout( function() {
     264                        var $focused = document.activeElement;
     265                        var $contains = $parent.contains( $focused );
     266
     267                        // If $focused is defined and not inside the menu container, close the popup.
     268                        if ( $focused && ! $contains ) {
     269                                if ( 'true' === $toggle.getAttribute( 'aria-expanded' ) ) {
     270                                        imageEdit.togglePopup( $toggle );
     271                                }
     272                        }
     273                }, 100 );
     274
     275                return false;
     276        },
     277
     278        /**
    248279         * Navigate popup menu by arrow keys.
    249280         *
    250281         * @since 6.3.0
  • src/wp-admin/includes/image-edit.php

     
    6363                        <button type="button" onclick="imageEdit.toggleCropTool( <?php echo "$post_id, '$nonce'"; ?>, this );" aria-expanded="false" aria-controls="imgedit-crop" class="imgedit-crop button disabled" disabled><?php esc_html_e( 'Crop' ); ?></button>
    6464                        <button type="button" class="imgedit-scale button" onclick="imageEdit.toggleControls(this);" aria-expanded="false" aria-controls="imgedit-scale"><?php esc_html_e( 'Scale' ); ?></button>
    6565                        <div class="imgedit-rotate-menu-container">
    66                                 <button type="button" aria-controls="imgedit-rotate-menu" class="imgedit-rotate button" aria-expanded="false" onclick="imageEdit.togglePopup(this)"><?php esc_html_e( 'Image Rotation' ); ?></button>
     66                                <button type="button" aria-controls="imgedit-rotate-menu" class="imgedit-rotate button" aria-expanded="false" onclick="imageEdit.togglePopup(this)" onblur="imageEdit.monitorPopup(this)"><?php esc_html_e( 'Image Rotation' ); ?></button>
    6767                                <div id="imgedit-rotate-menu" class="imgedit-popup-menu">
    6868                        <?php
    6969                        // On some setups GD library does not provide imagerotate() - Ticket #11536.
     
    7575                        ) ) {
    7676                                $note_no_rotate = '';
    7777                                ?>
    78                                         <button type="button" class="imgedit-rleft button" onkeyup="imageEdit.browsePopup(this)" onclick="imageEdit.rotate( 90, <?php echo "$post_id, '$nonce'"; ?>, this)"><?php esc_html_e( 'Rotate 90┬░ left' ); ?></button>
    79                                         <button type="button" class="imgedit-rright button" onkeyup="imageEdit.browsePopup(this)" onclick="imageEdit.rotate(-90, <?php echo "$post_id, '$nonce'"; ?>, this)"><?php esc_html_e( 'Rotate 90┬░ right' ); ?></button>
    80                                         <button type="button" class="imgedit-rfull button" onkeyup="imageEdit.browsePopup(this)" onclick="imageEdit.rotate(180, <?php echo "$post_id, '$nonce'"; ?>, this)"><?php esc_html_e( 'Rotate 180┬░' ); ?></button>
     78                                        <button type="button" class="imgedit-rleft button" onkeyup="imageEdit.browsePopup(this)" onclick="imageEdit.rotate( 90, <?php echo "$post_id, '$nonce'"; ?>, this)" onblur="imageEdit.monitorPopup(this)"><?php esc_html_e( 'Rotate 90┬░ left' ); ?></button>
     79                                        <button type="button" class="imgedit-rright button" onkeyup="imageEdit.browsePopup(this)" onclick="imageEdit.rotate(-90, <?php echo "$post_id, '$nonce'"; ?>, this)" onblur="imageEdit.monitorPopup(this)"><?php esc_html_e( 'Rotate 90┬░ right' ); ?></button>
     80                                        <button type="button" class="imgedit-rfull button" onkeyup="imageEdit.browsePopup(this)" onclick="imageEdit.rotate(180, <?php echo "$post_id, '$nonce'"; ?>, this)" onblur="imageEdit.monitorPopup(this)"><?php esc_html_e( 'Rotate 180┬░' ); ?></button>
    8181                                <?php
    8282                        } else {
    8383                                $note_no_rotate = '<p class="note-no-rotate"><em>' . __( 'Image rotation is not supported by your web host.' ) . '</em></p>';
     
    8888                        }
    8989                        ?>
    9090                                        <hr />
    91                                         <button type="button" onkeyup="imageEdit.browsePopup(this)" onclick="imageEdit.flip(1, <?php echo "$post_id, '$nonce'"; ?>, this)" class="imgedit-flipv button"><?php esc_html_e( 'Flip vertical' ); ?></button>
    92                                         <button type="button" onkeyup="imageEdit.browsePopup(this)" onclick="imageEdit.flip(2, <?php echo "$post_id, '$nonce'"; ?>, this)" class="imgedit-fliph button"><?php esc_html_e( 'Flip horizontal' ); ?></button>
     91                                        <button type="button" onkeyup="imageEdit.browsePopup(this)" onclick="imageEdit.flip(1, <?php echo "$post_id, '$nonce'"; ?>, this)" onblur="imageEdit.monitorPopup(this)" class="imgedit-flipv button"><?php esc_html_e( 'Flip vertical' ); ?></button>
     92                                        <button type="button" onkeyup="imageEdit.browsePopup(this)" onclick="imageEdit.flip(2, <?php echo "$post_id, '$nonce'"; ?>, this)" onblur="imageEdit.monitorPopup(this)" class="imgedit-fliph button"><?php esc_html_e( 'Flip horizontal' ); ?></button>
    9393                                        <?php echo $note_no_rotate; ?>
    9494                                </div>
    9595                        </div>