/** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ /*jshint browser:true jquery:true expr:true*/ define([ 'jquery', 'jquery/ui' ], function ($) { 'use strict'; $.widget('mage.changeEmailPassword', { options: { changeEmailSelector: '[data-role=change-email]', changePasswordSelector: '[data-role=change-password]', mainContainerSelector: '[data-container=change-email-password]', titleSelector: '[data-title=change-email-password]', emailContainerSelector: '[data-container=change-email]', newPasswordContainerSelector: '[data-container=new-password]', confirmPasswordContainerSelector: '[data-container=confirm-password]', currentPasswordSelector: '[data-input=current-password]', emailSelector: '[data-input=change-email]', newPasswordSelector: '[data-input=new-password]', confirmPasswordSelector: '[data-input=confirm-password]' }, /** * Create widget * @private */ _create: function () { this.element.on('change', $.proxy(function () { this._checkChoice(); }, this)); this._checkChoice(); }, /** * Check choice * @private */ _checkChoice: function () { if ($(this.options.changeEmailSelector).is(':checked') && $(this.options.changePasswordSelector).is(':checked')) { this._showAll(); } else if ($(this.options.changeEmailSelector).is(':checked')) { this._showEmail(); } else if ($(this.options.changePasswordSelector).is(':checked')) { this._showPassword(); } else { this._hideAll(); } }, /** * Show email and password input fields * @private */ _showAll: function () { $(this.options.titleSelector).html(this.options.titleChangeEmailAndPassword); $(this.options.mainContainerSelector).show(); $(this.options.emailContainerSelector).show(); $(this.options.newPasswordContainerSelector).show(); $(this.options.confirmPasswordContainerSelector).show(); $(this.options.currentPasswordSelector).attr('data-validate', '{required:true}').prop('disabled', false); $(this.options.emailSelector).attr('data-validate', '{required:true}').prop('disabled', false); $(this.options.newPasswordSelector).attr( 'data-validate', '{required:true, \'validate-customer-password\':true}' ).prop('disabled', false); $(this.options.confirmPasswordSelector).attr( 'data-validate', '{required:true, equalTo:"' + this.options.newPasswordSelector + '"}' ).prop('disabled', false); }, /** * Hide email and password input fields * @private */ _hideAll: function () { $(this.options.mainContainerSelector).hide(); $(this.options.emailContainerSelector).hide(); $(this.options.newPasswordContainerSelector).hide(); $(this.options.confirmPasswordContainerSelector).hide(); $(this.options.currentPasswordSelector).removeAttr('data-validate').prop('disabled', true); $(this.options.emailSelector).removeAttr('data-validate').prop('disabled', true); $(this.options.newPasswordSelector).removeAttr('data-validate').prop('disabled', true); $(this.options.confirmPasswordSelector).removeAttr('data-validate').prop('disabled', true); }, /** * Show email input fields * @private */ _showEmail: function () { this._showAll(); $(this.options.titleSelector).html(this.options.titleChangeEmail); $(this.options.newPasswordContainerSelector).hide(); $(this.options.confirmPasswordContainerSelector).hide(); $(this.options.newPasswordSelector).removeAttr('data-validate').prop('disabled', true); $(this.options.confirmPasswordSelector).removeAttr('data-validate').prop('disabled', true); }, /** * Show password input fields * @private */ _showPassword: function () { this._showAll(); $(this.options.titleSelector).html(this.options.titleChangePassword); $(this.options.emailContainerSelector).hide(); $(this.options.emailSelector).removeAttr('data-validate').prop('disabled', true); } }); return $.mage.changeEmailPassword; });