123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- 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();
- this._bind();
- },
- /**
- * Event binding, will monitor change, keyup and paste events.
- * @private
- */
- _bind: function () {
- this._on($(this.options.emailSelector), {
- 'change': this._updatePasswordFieldWithEmailValue,
- 'keyup': this._updatePasswordFieldWithEmailValue,
- 'paste': this._updatePasswordFieldWithEmailValue
- });
- },
- /**
- * 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._updatePasswordFieldWithEmailValue();
- $(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);
- },
- /**
- * Update password validation rules with email input field value
- * @private
- */
- _updatePasswordFieldWithEmailValue: function () {
- $(this.options.newPasswordSelector).attr(
- 'data-validate',
- '{required:true, ' +
- '\'validate-customer-password\':true, ' +
- '\'password-not-equal-to-user-name\':\'' + $(this.options.emailSelector).val() + '\'}'
- ).prop('disabled', false);
- }
- });
- return $.mage.changeEmailPassword;
- });
|