diff --git a/wp-content/themes/cosmopet/modules/footer/assets/css/gp-style-desktop.css b/wp-content/themes/cosmopet/modules/footer/assets/css/gp-style-desktop.css index e966923..5cec87a 100644 --- a/wp-content/themes/cosmopet/modules/footer/assets/css/gp-style-desktop.css +++ b/wp-content/themes/cosmopet/modules/footer/assets/css/gp-style-desktop.css @@ -172,7 +172,7 @@ } .modal__login { - width: 500px; + width: 100%; } .modal__item.active { diff --git a/wp-content/themes/cosmopet/modules/footer/assets/js/footer.js b/wp-content/themes/cosmopet/modules/footer/assets/js/footer.js index c2fa472..1947f31 100644 --- a/wp-content/themes/cosmopet/modules/footer/assets/js/footer.js +++ b/wp-content/themes/cosmopet/modules/footer/assets/js/footer.js @@ -776,64 +776,64 @@ initCounters() // function -function modalOpen(buttonElement, contentElement){ - let modal = document.querySelector('.modal'), - aside = document.querySelector('.modal__aside'), - elements = document.querySelectorAll(buttonElement), - device = window.screen.width; - - elements.forEach(e => { - let thisContentElement = document.querySelector(contentElement); - - e.onclick = function () { - modal.classList.add('active'); - thisContentElement.classList.add('active'); +// function modalOpen(buttonElement, contentElement){ +// let modal = document.querySelector('.modal'), +// aside = document.querySelector('.modal__aside'), +// elements = document.querySelectorAll(buttonElement), +// device = window.screen.width; + +// elements.forEach(e => { +// let thisContentElement = document.querySelector(contentElement); + +// e.onclick = function () { +// modal.classList.add('active'); +// thisContentElement.classList.add('active'); - let width = thisContentElement.clientWidth; - - setTimeout(() => { - if (device <= 720) { - aside.style.width = `${device}px`; - thisContentElement.style.opacity = 1; - thisContentElement.style.filter = 'blur(0px)'; - }else{ - aside.style.width = `${width}px`; - thisContentElement.style.opacity = 1; - thisContentElement.style.filter = 'blur(0px)'; - } - }, 10); - } - }) -} - -function modalClose(buttonElement) { - let modal = document.querySelector('.modal'), - aside = document.querySelector('.modal__aside'), - asideItems = document.querySelectorAll('.modal__item'), - elements = document.querySelectorAll(buttonElement); - - elements.forEach(e => { - e.onclick = function () { - aside.style.width = '0px'; +// let width = thisContentElement.clientWidth; + +// setTimeout(() => { +// if (device <= 720) { +// aside.style.width = `${device}px`; +// thisContentElement.style.opacity = 1; +// thisContentElement.style.filter = 'blur(0px)'; +// }else{ +// aside.style.width = `${width}px`; +// thisContentElement.style.opacity = 1; +// thisContentElement.style.filter = 'blur(0px)'; +// } +// }, 10); +// } +// }) +// } + +// function modalClose(buttonElement) { +// let modal = document.querySelector('.modal'), +// aside = document.querySelector('.modal__aside'), +// asideItems = document.querySelectorAll('.modal__item'), +// elements = document.querySelectorAll(buttonElement); + +// elements.forEach(e => { +// e.onclick = function () { +// aside.style.width = '0px'; - asideItems.forEach(e => { - if (e.classList.contains('active')) { - e.style.filter = 'blur(10px)'; - } - }); - - setTimeout(() => { - asideItems.forEach(e => { - if (e.classList.contains('active')) { - e.classList.remove('active'); - } - }); - - modal.classList.remove('active'); - }, 300); - } - }) -} +// asideItems.forEach(e => { +// if (e.classList.contains('active')) { +// e.style.filter = 'blur(10px)'; +// } +// }); + +// setTimeout(() => { +// asideItems.forEach(e => { +// if (e.classList.contains('active')) { +// e.classList.remove('active'); +// } +// }); + +// modal.classList.remove('active'); +// }, 300); +// } +// }) +// } function toggleOpenX(mainElement, buttonElement ,heightElement, contentElement, close) { let elements = document.querySelectorAll(mainElement); diff --git a/wp-content/themes/cosmopet/modules/header/assets/css/gp-style-desktop.css b/wp-content/themes/cosmopet/modules/header/assets/css/gp-style-desktop.css index 55bf2c5..02fc76c 100644 --- a/wp-content/themes/cosmopet/modules/header/assets/css/gp-style-desktop.css +++ b/wp-content/themes/cosmopet/modules/header/assets/css/gp-style-desktop.css @@ -759,4 +759,8 @@ width: 0px; .mini-profile__button{ position: relative; +} + +#telegram-widget-container { + text-align: center; } \ No newline at end of file diff --git a/wp-content/themes/cosmopet/modules/layout/assets/css/gp-style-core.css b/wp-content/themes/cosmopet/modules/layout/assets/css/gp-style-core.css index 2f83248..ecc58c3 100644 --- a/wp-content/themes/cosmopet/modules/layout/assets/css/gp-style-core.css +++ b/wp-content/themes/cosmopet/modules/layout/assets/css/gp-style-core.css @@ -2170,11 +2170,6 @@ textarea{ position: relative; } -.modal__aside { - right: 0%!important; -} - - .modal__button--center{ margin-right: auto; margin-left: auto; diff --git a/wp-content/themes/cosmopet/static/front-page/css/style.css b/wp-content/themes/cosmopet/static/front-page/css/style.css index a874969..017f0ac 100644 --- a/wp-content/themes/cosmopet/static/front-page/css/style.css +++ b/wp-content/themes/cosmopet/static/front-page/css/style.css @@ -4547,4 +4547,14 @@ color: #f4f1f0; .discount_block{ padding-bottom: 80px; +} + +.modal__aside { + position: fixed; + right: -20vw; + transition: right 0.3s ease-in-out; +} + +.modal__aside.active { + right: 0; } \ No newline at end of file diff --git a/wp-content/themes/cosmopet/static/front-page/js/main.js b/wp-content/themes/cosmopet/static/front-page/js/main.js index de71efc..b05c023 100644 --- a/wp-content/themes/cosmopet/static/front-page/js/main.js +++ b/wp-content/themes/cosmopet/static/front-page/js/main.js @@ -475,36 +475,30 @@ document.addEventListener('DOMContentLoaded', function () { document.addEventListener('DOMContentLoaded', function() { const loginButtons = document.querySelectorAll('.login-open'); - // Добавляем обработчик события для каждой кнопки loginButtons.forEach(button => { button.addEventListener('click', function(event) { - event.preventDefault(); // Предотвращаем стандартное действие (если это ссылка) + event.preventDefault(); - // Находим элементы модального окна const modal = document.querySelector('.modal'); const modalAside = document.querySelector('.modal__aside'); const modalLogin = document.querySelector('.modal__login'); - // Добавляем классы active modal.classList.add('active'); modalLogin.classList.add('active'); - // Устанавливаем ширину для modal__aside - modalAside.style.width = '412px'; + // Set width and slide in from right + modalAside.style.width = '20vw'; + modalAside.style.right = '0'; }); }); - // Опционально: добавляем функцию закрытия модального окна - // Например, при клике на фон или кнопку закрытия const closeButtons = document.querySelectorAll('.modal-close'); const modal = document.querySelector('.modal'); - // Закрытие по клику на кнопку закрытия closeButtons.forEach(button => { button.addEventListener('click', closeModal); }); - // Закрытие по клику на фон (если клик не на модальное окно) modal.addEventListener('click', function(event) { if (event.target === modal) { closeModal(); @@ -516,12 +510,12 @@ document.addEventListener('DOMContentLoaded', function() { const modalAside = document.querySelector('.modal__aside'); const modalLogin = document.querySelector('.modal__login'); - // Удаляем классы active modal.classList.remove('active'); modalLogin.classList.remove('active'); - // Сбрасываем ширину + // Reset styles modalAside.style.width = ''; + modalAside.style.right = '-30vw'; } }); diff --git a/wp-content/themes/cosmopet/templates/footer.twig b/wp-content/themes/cosmopet/templates/footer.twig index 5809cd8..2d3dc8b 100644 --- a/wp-content/themes/cosmopet/templates/footer.twig +++ b/wp-content/themes/cosmopet/templates/footer.twig @@ -172,86 +172,115 @@ function onTelegramAuth(user) { }); }); -document.addEventListener('DOMContentLoaded', function() { - // Общая функция для открытия модальных окон - function modalOpen(triggerSelector, modalSelector) { - const triggers = document.querySelectorAll(triggerSelector); - const modalLogin = document.querySelector('.modal'); - const modalItem = document.querySelector(modalSelector); - const modalAside = modalItem ? modalItem.querySelector('.modal__aside') : null; +document.addEventListener('DOMContentLoaded', function () { + // Функция для обновления ширины .modal__aside + function updateAsideWidth() { + const modalItem = document.querySelector('.modal__item.active'); + if (modalItem) { + const aside = modalItem.querySelector('.modal__aside'); + if (aside) { + aside.classList.add('active'); // Используем CSS для анимации ширины + } + } + } + + // Общая функция для открытия модальных окон + function modalOpen(triggerSelector, modalSelector) { + const triggers = document.querySelectorAll(triggerSelector); + const modal = document.querySelector('.modal'); + const modalItem = document.querySelector(modalSelector); + const modalAside = modalItem ? modalItem.querySelector('.modal__aside') : null; - triggers.forEach(trigger => { - trigger.addEventListener('click', (e) => { - e.preventDefault(); // Предотвращаем стандартное поведение + triggers.forEach(trigger => { + // Удаляем старые обработчики, чтобы избежать дублирования + trigger.removeEventListener('click', handleModalOpen); + trigger.addEventListener('click', handleModalOpen); - // Сбрасываем стили и классы для всех модальных окон - document.querySelectorAll('.modal__item').forEach(item => { - item.classList.remove('active'); - item.style.cssText = ''; // Сбрасываем opacity, filter и другие стили - const aside = item.querySelector('.modal__aside'); - if (aside) { - aside.style.width = ''; - } - }); + function handleModalOpen(e) { + e.preventDefault(); - // Открываем нужное модальное окно - if (modalLogin && modalItem) { - modal.classList.add('active'); - modalItem.classList.add('active'); - modalItem.style.opacity = '1'; // Устанавливаем видимость - modalItem.style.filter = 'blur(0px)'; // Убираем размытие - if (modalAside) { - modalAside.style.width = '500px'; // Устанавливаем ширину - } - } - }); + // Сбрасываем стили и классы для всех модальных окон + document.querySelectorAll('.modal__item').forEach(item => { + item.classList.remove('active'); + item.style.cssText = ''; // Сбрасываем стили + const aside = item.querySelector('.modal__aside'); + if (aside) { + aside.classList.remove('active'); + aside.style.width = ''; // Сбрасываем style.width + } }); - } - // Общая функция для закрытия модальных окон - function modalClose(closeSelector) { - const closes = document.querySelectorAll(closeSelector); - const modalLogin = document.querySelector('.modal'); + // Открываем нужное модальное окно + if (modal && modalItem) { + modal.classList.add('active'); + modalItem.classList.add('active'); + if (modalAside) { + modalAside.classList.add('active'); // Используем CSS для анимации + } + } + } + }); + } - closes.forEach(close => { - close.addEventListener('click', () => { - document.querySelectorAll('.modal__item').forEach(item => { - item.classList.remove('active'); - item.style.cssText = ''; // Сбрасываем opacity, filter и другие стили - const aside = item.querySelector('.modal__aside'); - if (aside) { - aside.style.width = ''; - } - }); - if (modalLogin) { - modal.classList.remove('active'); - } - }); - }); - } + // Общая функция для закрытия модальных окон + function modalClose(closeSelector) { + const closes = document.querySelectorAll(closeSelector); + const modal = document.querySelector('.modal'); - // Обработчик клика по фону модального окна - const modalLogin = document.querySelector('.modal'); - if (modalLogin) { - modal.addEventListener('click', (event) => { - if (event.target.classList.contains('modal')) { - const modalItem = modal.querySelector('.modal__item.active'); - if (modalItem) { - const aside = modalItem.querySelector('.modal__aside'); - if (aside) { - aside.style.width = '0px'; - } - modalItem.style.opacity = '0'; // Анимация закрытия - modalItem.style.filter = 'blur(10px)'; - setTimeout(() => { - modalItem.classList.remove('active'); - modalItem.style.cssText = ''; // Сбрасываем все стили после анимации - modal.classList.remove('active'); - }, 300); - } - } + closes.forEach(close => { + // Удаляем старые обработчики + close.removeEventListener('click', handleModalClose); + close.addEventListener('click', handleModalClose); + + function handleModalClose() { + document.querySelectorAll('.modal__item').forEach(item => { + const aside = item.querySelector('.modal__aside'); + if (aside) { + aside.classList.remove('active'); // Запускаем анимацию закрытия + } + item.classList.remove('active'); + item.style.cssText = ''; // Сбрасываем стили }); - } + if (modal) { + modal.classList.remove('active'); + } + } + }); + } + + // Обработчик клика по фону модального окна + const modal = document.querySelector('.modal'); + if (modal) { + modal.addEventListener('click', (event) => { + if (event.target.classList.contains('modal')) { + const modalItem = modal.querySelector('.modal__item.active'); + if (modalItem) { + const aside = modalItem.querySelector('.modal__aside'); + if (aside) { + aside.classList.remove('active'); // Запускаем анимацию закрытия + } + modalItem.classList.remove('active'); + modal.classList.remove('active'); + } + } + }); + } + + // Вызываем функции для привязки обработчиков + modalOpen('.button--filter', '.modal__filter'); + modalOpen('.basket-open', '.modal__basket'); + modalOpen('.login-open', '.modal__login'); + modalOpen('.open-to-know', '.modal__to-know'); + modalClose('.modal__close'); + modalClose('.modal-form-sub__close'); + + // Обновляем ширину при изменении размера окна + window.addEventListener('resize', () => { + updateAsideWidth(); + }); + + // Обновляем ширину при загрузке страницы + updateAsideWidth(); });