Make WordPress Core

Ticket #62019: copy-to-clipboard.patch

File copy-to-clipboard.patch, 3.6 KB (added by dhruvang21, 6 months ago)
  • src/js/_enqueues/admin/user-profile.js

    diff --git a/src/js/_enqueues/admin/user-profile.js b/src/js/_enqueues/admin/user-profile.js
    index 54215c7b42..99e5a0c0e4 100644
    a b  
    77        var updateLock = false,
    88                isSubmitting = false,
    99                __ = wp.i18n.__,
     10                clipboard = new ClipboardJS( '.application-password-display .copy-button' ),
    1011                $pass1Row,
    1112                $pass1,
    1213                $pass2,
     
    1819                currentPass,
    1920                $form,
    2021                originalFormContent,
    21                 $passwordWrapper;
     22                $passwordWrapper,
     23                successTimeout;
    2224
    2325        function generatePassword() {
    2426                if ( typeof zxcvbn !== 'function' ) {
     
    346348                }
    347349        }
    348350
     351        // Debug information copy section.
     352        clipboard.on( 'success', function( e ) {
     353                var triggerElement = $( e.trigger ),
     354                        successElement = $( '.success', triggerElement.closest( '.application-password-display' ) );
     355
     356                // Clear the selection and move focus back to the trigger.
     357                e.clearSelection();
     358
     359                // Show success visual feedback.
     360                clearTimeout( successTimeout );
     361                successElement.removeClass( 'hidden' );
     362
     363                // Hide success visual feedback after 3 seconds since last success.
     364                successTimeout = setTimeout( function() {
     365                        successElement.addClass( 'hidden' );
     366                }, 3000 );
     367
     368                // Handle success audible feedback.
     369                wp.a11y.speak( __( 'Site information has been copied to your clipboard.' ) );
     370        } );
     371
    349372        $( function() {
    350373                var $colorpicker, $stylesheet, user_id, current_user_id,
    351374                        select       = $( '#display_name' ),
  • src/wp-admin/css/common.css

    diff --git a/src/wp-admin/css/common.css b/src/wp-admin/css/common.css
    index 17d9493161..5e623df062 100644
    a b a#remove-post-thumbnail:hover, 
    916916        border: none;
    917917}
    918918
     919.application-password-display .success {
     920    color: #007017;
     921    margin-left: 0.5rem;
     922}
     923
    919924/*------------------------------------------------------------------------------
    920925  3.0 - Actions
    921926------------------------------------------------------------------------------*/
  • src/wp-admin/user-edit.php

    diff --git a/src/wp-admin/user-edit.php b/src/wp-admin/user-edit.php
    index 860a0a6e07..92f32ad198 100644
    a b switch ( $action ) { 
    984984                                        ?>
    985985                                </label>
    986986                                <input id="new-application-password-value" type="text" class="code" readonly="readonly" value="{{ data.password }}" />
     987                                <button type="button" class="button copy-button" data-clipboard-text="{{ data.password }}">copy</button>
     988                                <span class="success hidden" aria-hidden="true"><?php _e( 'Copied!' ); ?></span>
    987989                        </p>
    988990                        <p><?php _e( 'Be sure to save this in a safe location. You will not be able to retrieve it.' ); ?></p>
    989991                        <button type="button" class="notice-dismiss">
  • src/wp-includes/script-loader.php

    diff --git a/src/wp-includes/script-loader.php b/src/wp-includes/script-loader.php
    index c9eb40d1c5..3dc601d5cd 100644
    a b function wp_default_scripts( $scripts ) { 
    12171217        $scripts->add( 'auth-app', "/wp-admin/js/auth-app$suffix.js", array( 'jquery', 'wp-api-request', 'wp-i18n', 'wp-hooks' ), false, 1 );
    12181218        $scripts->set_translations( 'auth-app' );
    12191219
    1220         $scripts->add( 'user-profile', "/wp-admin/js/user-profile$suffix.js", array( 'jquery', 'password-strength-meter', 'wp-util' ), false, 1 );
     1220        $scripts->add( 'user-profile', "/wp-admin/js/user-profile$suffix.js", array( 'clipboard', 'jquery', 'password-strength-meter', 'wp-util', 'wp-a11y' ), false, 1 );
    12211221        $scripts->set_translations( 'user-profile' );
    12221222        $user_id = isset( $_GET['user_id'] ) ? (int) $_GET['user_id'] : 0;
    12231223        did_action( 'init' ) && $scripts->localize(