let RepsolRegisterLoginModal = { modalId : "#registerLoginModal", observer: {}, init: function(){ RepsolRegisterLoginModal.events(); RepsolRegisterLoginModal.checkTabs(false); RepsolRegisterLoginModal.dropdownModalItem(); RepsolRegisterLoginModal.setCurrentPage() }, events: function(){ $(RepsolRegisterLoginModal.modalId).on('show.bs.modal', function (e) { let $target = $(e.target); if($target.hasClass('register-login-modal-component')) { window.scrollTo(0,0); $(this).siblings(".register-login-modal-backdrop").addClass("show"); } else { $(this).siblings(".register-login-modal-backdrop").addClass("show"); } }); $(RepsolRegisterLoginModal.modalId).on('shown.bs.modal', function (e) { let $target = $(e.target); if($target.hasClass('register-login-modal-component')) { RepsolRegisterLoginModal.checkTabs(true); $("body").addClass("modal-open--register-login alerts-on-top--modal loader--modal"); $(document).find(".g-recaptcha").removeClass('d-none'); let observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { let addedNodes = mutation.addedNodes; for(var i=0; i < addedNodes.length; i++){ let classList = addedNodes[i].classList.value; if( classList.indexOf('gigya-screen-dialog') != -1 ){ $(RepsolRegisterLoginModal.modalId).removeAttr("tabindex"); } } let removedNodes = mutation.removedNodes; for(var i=0; i < removedNodes.length; i++){ let classList = removedNodes[i].classList.value; if( classList.indexOf('gigya-screen-dialog') != -1 ){ $(RepsolRegisterLoginModal.modalId).attr("tabindex", "-1"); } } }); }); observer.observe(document.querySelector('body'), { childList: true }); RepsolRegisterLoginModal.observer = observer; } else { RepsolRegisterLoginModal.checkTabs(true); $("body").addClass("modal-open--register-login alerts-on-top--modal loader--modal"); $(document).find(".g-recaptcha").removeClass('d-none'); } }); $(RepsolRegisterLoginModal.modalId).on('hidden.bs.modal', function (e) { let $target = $(e.target); if($target.hasClass('register-login-modal-component')) { $(this).siblings(".register-login-modal-backdrop").removeClass("show"); RepsolLoginStore.close(); $("body").removeClass("modal-open--register-login alerts-on-top--modal loader--modal"); RepsolRecaptcha.hideCaptcha(); RepsolRegisterLoginModal.observer.disconnect(); } else { } }); $(RepsolRegisterLoginModal.modalId).on("mousedown", function (e) { let $target = $(e.target), targetId = `#${$target.attr('id')}`; if( targetId == RepsolRegisterLoginModal.modalId && $target.closest(".modal-dialog").length == 0){ $(RepsolRegisterLoginModal.modalId).modal("hide"); } }); $("#registerDropdownItemsModal").on('show.bs.modal', function (e) { let $modal = $(this); $modal.addClass("backdrop"); }); $("#registerDropdownItemsModal").on('hidden.bs.modal', function (e) { let $modal = $(this); $modal.removeClass("backdrop"); let $modalParent = $modal.parent().closest(".modal"); if($modalParent.length > 0){ if(!$(document).find("body").hasClass("modal-open") && $modalParent.hasClass("show")){ $(document).find("body").addClass("modal-open") } } }); $("#registerDropdownItemsModal").on("click", function (e) { let $target = $(e.target); if( $target.hasClass("register-item-msg-modal")){ $(this).modal("hide"); } }); $(document).on("click", ".js-show-tab-login", function(ev){ ev.preventDefault(); let $registerLoginModal = $(RepsolRegisterLoginModal.modalId); if( $registerLoginModal.length > 0 ){ if( !$registerLoginModal.hasClass("show") ){ $registerLoginModal.modal("show"); } let $tabPanel = $registerLoginModal.find(".cmp-tabs__tabpanel"), $loginForm = $registerLoginModal.find(".login-form"), loginTabPanelId = $loginForm.closest(".cmp-tabs__tabpanel").attr("id") $loginTab = $(`#${loginTabPanelId}-tab`); if($loginTab.length > 0){ $loginTab.click(); } } }); }, checkTabs: function(reload){ let $tabs = $('.register-login-modal-component').find(".cmp-tabs__tablist"); if($tabs.length > 0){ if($tabs.hasClass("slick-initialized")){ $tabs.slick('unslick'); } if(reload){ ecommerceTabsCarousel.setTotalWidth($tabs); } } }, showModal: function(){ let $modal = $(RepsolRegisterLoginModal.modalId); if( $modal.length > 0 ){ $modal.modal("show"); } }, showLoginToUserNotLogged: function () { let showLogin = Repsol.utils.getData('openLoginModal'); let redirected = Repsol.utils.getData('loginRedirected'); if (showLogin && redirected) { RepsolRegisterLoginModal.showModal(); Repsol.utils.removeData('openLoginModal'); Repsol.utils.removeData('loginRedirected'); } }, showRecaptcha: () =>{ let $loginForm = $(RepsolRegisterLoginModal.modalId).find('.login-form'); if($loginForm.length > 0){ RepsolRecaptcha.checkCaptcha($loginForm); RepsolRecaptcha.moveCaptcha($loginForm); } }, hideRecaptcha: () =>{ let $loginForm = $(RepsolRegisterLoginModal.modalId).find('.login-form'); if($loginForm.length > 0){ RepsolRecaptcha.moveCaptcha($('#recaptchaID')); RepsolRecaptcha.hideCaptcha(); } }, dropdownModalItem: function () { let $modal = $("#registerDropdownItemsModal"); let index = 0; function showModalItem() { $('.register-dropdown-item').on('click', function () { index = $(this).attr('data-item-index') if ($modal.length > 0 && $modal.find(`.modal-content.modal-case-${index}`).length > 0) { $modal.find(`.modal-content:not(.modal-case-${index})`).addClass("d-none"); $modal.find(`.modal-content.modal-case-${index}`).removeClass("d-none"); $modal.modal("show"); } }) } showModalItem() }, setCurrentPage: function() { let header = $('.header-ecom') let headerStore = $('.header-ecom').data('header-type') let stayCurrentPage = $('.header-ecom').data('stay-current-page') if(headerStore != undefined && headerStore == 'store') { if(stayCurrentPage != undefined && stayCurrentPage == true) { $(header).attr('data-current-page', location.href) } } } } $('.register-dropdown-toggle').on('click', function () { if ($(this).parent().hasClass('is-active')) { $(this).parent().removeClass('is-active'); } else { $('.dropdown').removeClass('is-active'); $(this).parent().addClass('is-active'); } }); $(document).ready(function () { RepsolRegisterLoginModal.init(); }); $(window).on('load', function() { RepsolRegisterLoginModal.showLoginToUserNotLogged() })