Skip to content

Commit c8fcc8c

Browse files
authored
New Style for Backup Codes (#804)
* add new style for codes * two column layout for codes * fix lint * add monospace font family
1 parent fe10ce0 commit c8fcc8c

2 files changed

Lines changed: 47 additions & 2 deletions

File tree

providers/class-two-factor-backup-codes.php

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,14 +182,36 @@ public function user_options( $user ) {
182182
</p>
183183
</div>
184184
<div class="two-factor-backup-codes-wrapper" style="display:none;">
185-
<ol class="two-factor-backup-codes-unused-codes"></ol>
185+
<div class="two-factor-backup-codes-list-wrap">
186+
<ol class="two-factor-backup-codes-unused-codes"></ol>
187+
</div>
186188
<p class="description"><?php esc_html_e( 'Write these down! Once you navigate away from this page, you will not be able to view these codes again.', 'two-factor' ); ?></p>
187189
<p>
190+
<a class="button button-two-factor-backup-codes-copy button-secondary hide-if-no-js" href="javascript:void(0);" id="two-factor-backup-codes-copy-link"><?php esc_html_e( 'Copy Codes', 'two-factor' ); ?></a>
188191
<a class="button button-two-factor-backup-codes-download button-secondary hide-if-no-js" href="javascript:void(0);" id="two-factor-backup-codes-download-link" download="two-factor-backup-codes.txt"><?php esc_html_e( 'Download Codes', 'two-factor' ); ?></a>
189192
</p>
190193
</div>
191194
<script>
192195
( function( $ ) {
196+
$( '.button-two-factor-backup-codes-copy' ).click( function() {
197+
var csvCodes = $( '.two-factor-backup-codes-wrapper' ).data( 'codesCsv' );
198+
199+
if ( ! csvCodes ) {
200+
return;
201+
}
202+
203+
if ( navigator.clipboard && navigator.clipboard.writeText ) {
204+
navigator.clipboard.writeText( csvCodes );
205+
return;
206+
}
207+
208+
var $temp = $( '<textarea>' ).val( csvCodes ).css( { position: 'absolute', left: '-9999px' } );
209+
$( 'body' ).append( $temp );
210+
$temp[0].select();
211+
document.execCommand( 'copy' );
212+
$temp.remove();
213+
} );
214+
193215
$( '.button-two-factor-backup-codes-generate' ).click( function() {
194216
wp.apiRequest( {
195217
method: 'POST',
@@ -202,10 +224,12 @@ public function user_options( $user ) {
202224

203225
$( '.two-factor-backup-codes-wrapper' ).show();
204226
$codesList.html( '' );
227+
$codesList.css( { 'column-count': 2, 'column-gap': '80px', 'max-width': '420px' } );
228+
$( '.two-factor-backup-codes-wrapper' ).data( 'codesCsv', response.codes.join( ',' ) );
205229

206230
// Append the codes.
207231
for ( var i = 0; i < response.codes.length; i++ ) {
208-
$codesList.append( '<li>' + response.codes[ i ] + '</li>' );
232+
$codesList.append( '<li class="two-factor-backup-codes-token">' + response.codes[ i ] + '</li>' );
209233
}
210234

211235
// Update counter.

user-edit.css

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,27 @@
1818
margin: 0 0.15rem;
1919
}
2020

21+
.two-factor-backup-codes-wrapper > :not(:last-child) {
22+
margin-bottom: 1em;
23+
}
24+
25+
.two-factor-backup-codes-list-wrap {
26+
background-color: #ddd;
27+
display: inline-block;
28+
margin-top: 24px;
29+
padding: 20px;
30+
}
31+
32+
.two-factor-backup-codes-list-wrap .two-factor-backup-codes-unused-codes {
33+
margin: 0;
34+
padding: revert;
35+
}
36+
37+
.two-factor-backup-codes-list-wrap .two-factor-backup-codes-token {
38+
letter-spacing: 0.3em;
39+
font-family: monospace;
40+
}
41+
2142
#two-factor-qr-code {
2243
min-width: 205px;
2344
min-height: 205px;

0 commit comments

Comments
 (0)