| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- /* global wp, pwsL10n, wc_password_strength_meter_params */
- ( function( $ ) {
- 'use strict';
- /**
- * Password Strength Meter class.
- */
- var wc_password_strength_meter = {
- /**
- * Initialize strength meter actions.
- */
- init: function() {
- $( document.body )
- .on( 'keyup change', 'form.register #reg_password, form.checkout #account_password, form.edit-account #password_1, form.lost_reset_password #password_1', this.strengthMeter );
- $( 'form.checkout #createaccount' ).change();
- },
- /**
- * Strength Meter.
- */
- strengthMeter: function() {
- var wrapper = $( 'form.register, form.checkout, form.edit-account, form.lost_reset_password' ),
- submit = $( 'button[type="submit"]', wrapper ),
- field = $( '#reg_password, #account_password, #password_1', wrapper ),
- strength = 1,
- fieldValue = field.val();
- wc_password_strength_meter.includeMeter( wrapper, field );
- strength = wc_password_strength_meter.checkPasswordStrength( wrapper, field );
- if ( fieldValue.length > 0 && strength < wc_password_strength_meter_params.min_password_strength && ! wrapper.is( 'form.checkout' ) && -1 !== strength ) {
- submit.attr( 'disabled', 'disabled' ).addClass( 'disabled' );
- } else {
- submit.removeAttr( 'disabled', 'disabled' ).removeClass( 'disabled' );
- }
- },
- /**
- * Include meter HTML.
- *
- * @param {Object} wrapper
- * @param {Object} field
- */
- includeMeter: function( wrapper, field ) {
- var meter = wrapper.find( '.woocommerce-password-strength' );
- if ( '' === field.val() ) {
- meter.hide();
- $( document.body ).trigger( 'wc-password-strength-hide' );
- } else if ( 0 === meter.length ) {
- field.after( '<div class="woocommerce-password-strength" aria-live="polite"></div>' );
- $( document.body ).trigger( 'wc-password-strength-added' );
- } else {
- meter.show();
- $( document.body ).trigger( 'wc-password-strength-show' );
- }
- },
- /**
- * Check password strength.
- *
- * @param {Object} field
- *
- * @return {Int}
- */
- checkPasswordStrength: function( wrapper, field ) {
- var meter = wrapper.find( '.woocommerce-password-strength' ),
- hint = wrapper.find( '.woocommerce-password-hint' ),
- hint_html = '<small class="woocommerce-password-hint">' + wc_password_strength_meter_params.i18n_password_hint + '</small>',
- strength = wp.passwordStrength.meter( field.val(), wp.passwordStrength.userInputBlacklist() ),
- error = '';
- // Reset.
- meter.removeClass( 'short bad good strong' );
- hint.remove();
- if ( meter.is( ':hidden' ) ) {
- return strength;
- }
- // Error to append
- if ( strength < wc_password_strength_meter_params.min_password_strength ) {
- error = ' - ' + wc_password_strength_meter_params.i18n_password_error;
- }
- switch ( strength ) {
- case 0 :
- meter.addClass( 'short' ).html( pwsL10n['short'] + error );
- meter.after( hint_html );
- break;
- case 1 :
- meter.addClass( 'bad' ).html( pwsL10n.bad + error );
- meter.after( hint_html );
- break;
- case 2 :
- meter.addClass( 'bad' ).html( pwsL10n.bad + error );
- meter.after( hint_html );
- break;
- case 3 :
- meter.addClass( 'good' ).html( pwsL10n.good + error );
- break;
- case 4 :
- meter.addClass( 'strong' ).html( pwsL10n.strong + error );
- break;
- case 5 :
- meter.addClass( 'short' ).html( pwsL10n.mismatch );
- break;
- }
- return strength;
- }
- };
- wc_password_strength_meter.init();
- })( jQuery );
|