'use strict'; jQuery(document).ready(function ($) { // OVERLAY $('.product__main').on('click', '.open-overlay', function () { let product = $(this).closest('.product__item'), overlay = product.find('.product-item__overlay'); $('.product__item').find('.product-item__overlay').css('top', '100%'); overlay.css('top', 0); }) // END OVERLAY $('.product__main').on('click', '.state__button', function(evt) { evt.preventDefault(); let product = $(this).closest('.product__item'); let price = $(this).data('product_price'); let id = $(this).data('product_id'); let qty = product.find('.counter__input').val(); product.find('.product-item-overlay__price').html(price * qty + ' '); product.find('.select__state').data('product_price', price).data('product_id', id).val($(this).text().trim()); product.find('.state__block').removeClass('expanded').css('height', '0'); product.find('.add_to_cart_button').detach(); product.find('.product-item-overlay__button').prepend('Добавить в корзину'); }) $('.product__main').on('click', '.counter__button', function(evt) { evt.preventDefault(); let product = $(this).closest('.product__item'); let priceElement = product.find('.select__state'); let price = parseFloat(priceElement.data('product_price')); let qty = product.find('.counter__input'); // Если цена не найдена, пытаемся взять её из .product-item__price if (!price || isNaN(price)) { let priceText = product.find('.product-item__price p').text(); price = parseFloat(priceText.replace(/[^0-9\.,]/g, '').replace(',', '.')); } // Обновляем количество if ($(this).hasClass('minus') && parseInt(qty.val()) >= 2) { qty.val(parseInt(qty.val()) - 1); } else if ($(this).hasClass('plus')) { qty.val(parseInt(qty.val()) + 1); } // Обновляем атрибут data-quantity для кнопки "Добавить в корзину" product.find('.product-item-overlay__button a').attr('data-quantity', qty.val()); // Обновляем цену без символа валюты (он добавляется через ::after) console.log(price * qty.val()) product.find('.product-item-overlay__price').html((price * qty.val())); }); $('.product__main').on('click', '.select__state', function(evt) { evt.preventDefault(); let product = $(this).closest('.product__item'), listing = product.find('.state__block'); if (listing.hasClass('expanded')) { listing.removeClass('expanded').css('height', '0'); } else { listing.addClass('expanded').css('height', 'auto'); } product.find('.state__block').find('.state__button').removeClass('active'); product.find('.state__button').each(function () { if (product.find('.select__state').data('product_id') === $(this).data('product_id')) { $(this).addClass('active'); } }) }) let page = 1; jQuery('body').on('click', '#load-more-products', function(e) { e.preventDefault(); page++; let category = $(this).data('category_id'); let category_type = $(this).data('category_type'); $.ajax({ type: 'POST', url: '/wp-admin/admin-ajax.php', dataType: 'html', data: { 'action' : 'get_products', 'get_page' : page, 'get_category' : category, 'get_category_type' : category_type, }, success: function(data) { // if($('
').html(data).find('.archive__item.ended').size() > 0) $('#load-more-products').parents('.cta').remove(); // else $('#load-more-products').parents('.cta').show(); $('#load-more-products').detach(); $('.product__main').append(data); $('#load-more-products').prependTo('.product__footer'); }, error: function(data) { console.log(data); } }); }); $('.wpfMainWrapper').prepend(''); $('.wpfMainWrapper').find('.wpfFilterWrapper').appendTo($('.wpfFilters')); $('.wpfFilterWrapper').each(function () { if ($(this).data('filter-type') === 'wpfPrice') { $(this).find('.wpfFilterContent').append(''); $(this).find('.wpfPriceFilterRange').appendTo('.wpfExpandablePart'); $(this).find('.wpfPriceInputs').appendTo('.wpfExpandablePart'); $(this).find('.wpfCurrencySymbol').detach(); $(this).find('.wpfFilterDelimeter').detach(); } }); $('.wfpDescription').on('click', function () { $(this).closest('.wpfFilterWrapper').toggleClass('expanded').find('.wpfCheckboxHier').slideToggle(); $(this).parent().find('.wpfExpandablePart').slideToggle(); }) }) // header toggleOpenX('.lang', '.lang__open', '.lang__list', '.lang__content', false); toggleHeader('#pc-menu','.header__menu-block','.header__pc-menu', '.white', 'white'); toggleHeader('#phone-menu','.header__menu-block','.header__phone-menu', '.white', 'white'); // header // modal 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'); let modalWindow = document.querySelector('.modal'); // Изменено с modal на modalWindow modalWindow.onclick = function (event) { let target = event.target; if (target.classList.contains('modal')) { let aside = target.querySelector('.modal__aside'), modalItem = target.querySelector('.modal__item.active'); aside.style.width = '0px'; setTimeout(() => { modalItem.style.cssText = ''; modalItem.classList.remove('active'); target.classList.remove('active'); }, 300); } } // modal // toggle toggleOpenX('.toggle', '.toggle__title', '.toggle__content', '.toggle__block-content', true); // toggle // radio-button let radioButtons = document.querySelectorAll('.radio-button'); radioButtons.forEach(radioBlock => { let buttons = radioBlock.querySelectorAll('.button'); buttons.forEach(button => { let input = radioBlock.querySelector('.radio-button__input'); button.onclick = function (e) { e.preventDefault(); buttons.forEach(thisButton => { if (thisButton.classList.contains('active')) { thisButton.classList.remove('active') } }) let text = button.textContent.trim(); button.classList.toggle('active'); input.value = text; } }) }) // radio-button let products = document.querySelectorAll('.product__item'); products.forEach(productItem => { let button = productItem.querySelector('.open-overlay'), overlay = productItem.querySelector('.product-item__overlay'); if (button) { button.onclick = function (e) { document.querySelectorAll('.product__item').forEach(e => { if (e.classList.contains('active')) { e.classList.remove('active'); } }); document.querySelectorAll('.product-item__overlay').forEach(e => { if (e.classList.contains('active')) { e.classList.remove('active'); } }); productItem.classList.toggle('active'); overlay.classList.toggle('active'); } } }) // select // toggleOpenX('.select', '.select__state' , '.state__content', '.state__block', true); // let selects = document.querySelectorAll('.select'); // selects.forEach(select => { // let state = select.querySelector('.select__state'), // content = select.querySelector('.state__block'), // buttons = select.querySelectorAll('.state__button'); // buttons.forEach(e => { // let button = e; // e.onclick = function (event) { // event.preventDefault(); // buttons.forEach(element => { // if (element.classList.contains('active')) { // element.classList.remove('active'); // } // }) // let text = e.textContent.trim(); // state.value = text; // button.classList.add('active'); // content.style.height = 0; // select.classList.remove('active'); // } // }) // }) // select // counter // let counters = document.querySelectorAll('.counter'); // counters.forEach(e => { // let minus = e.querySelector('.minus'), // plus = e.querySelector('.plus'), // input = e.querySelector('.counter__input'); // minus.onclick = function (e) { // e.preventDefault(); // let number = input.value; // if (number >= 2){ // input.value = Number(number) - 1; // } // } // plus.onclick = function (e) { // e.preventDefault(); // let number = input.value; // if (number <= 99) { // input.value = Number(number) + 1; // } // } // }) // counter // checkbox let checkbox = document.querySelectorAll('.checkbox'); checkbox.forEach(e => { e.onclick = function (event) { let input = e.querySelector('.checkbox__input'); if (!e.classList.contains('active')) { input.checked = 1; }else{ input.checked = 0; } e.classList.toggle('active'); } }) // checkbox // function function modalOpen(buttonElement, contentElement){ let modal = document.querySelector('.modal'), aside = document.querySelector('.modal__aside'), elements = document.querySelectorAll(buttonElement), device = window.screen.width, body = document.querySelector('body'); elements.forEach(e => { let thisContentElement = document.querySelector(contentElement); e.onclick = function () { body.classList.add('overflow-hidden'); 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), body = document.querySelector('body'); elements.forEach(e => { e.onclick = function () { body.classList.remove('overflow-hidden'); 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); } }) } function toggleOpenX(mainElement, buttonElement ,heightElement, contentElement, close) { let elements = document.querySelectorAll(mainElement); elements.forEach(e => { let thisMainElement = e, thisButtonElement = e.querySelector(buttonElement), thisHeightElement = e.querySelector(heightElement), thisContentElement = e.querySelector(contentElement); thisButtonElement.onclick = function (e) { let height = thisHeightElement.clientHeight; if (close == true && !thisMainElement.classList.contains('active')) { elements.forEach(e => { if (e.classList.contains('active')) { e.classList.remove('active'); e.querySelector(contentElement).style.height = null } }) } if (!thisMainElement.classList.contains('active')) { thisContentElement.style.height = `${height}px`; thisMainElement.classList.add('active'); }else{ thisContentElement.style.height = null; thisMainElement.classList.remove('active'); } } }); } function toggleHeader(button, content, blockheight, removeBlock, removeClass) { let thisButton = document.querySelector(button), thisContent = document.querySelector(content), thisRemoveBlock = document.querySelector(removeBlock) || '', thisBlockheight = document.querySelector(blockheight); thisButton.onclick = function () { let height = thisBlockheight.clientHeight; if (!thisContent.classList .contains('open')) { thisContent.style.height = `${height}px`; thisContent.classList .add('open'); if (removeBlock) { thisRemoveBlock.classList.remove(removeClass); } }else{ thisContent.style.height = null; thisContent.classList .remove('open'); if (removeBlock) { if (window.scrollY <= 25) { thisRemoveBlock.classList.add(removeClass); } } } } } // function // resize window.addEventListener('resize', (e) => { let width = window.screen.width; // media modalOpen('.button--filter', '.modal__filter'); modalOpen('.basket-open', '.modal__basket'); modalOpen('.open-to-know', '.modal__to-know'); modalClose('.modal__close'); let modalItem = document.querySelectorAll('.modal__item'); // if (width <= 720) { modalItem.forEach(modal => { if (modal.classList.contains('active')) { let aside = document.querySelector('.modal__aside'); if (width <= 720) { aside.style.width = `${width}px` }else{ let openAside = document.querySelector('.modal__item.active'), newWidth = openAside.clientWidth; aside.style.width = `${newWidth}px` } } }) // } }); // resize // scroll if (document.querySelector('.header').classList.contains('white')) { window.addEventListener("scroll", function (e) { let header = document.querySelector('.header'); let scroll = window.scrollY; if (scroll >= 25) { header.classList.remove('white') }else{ header.classList.add('white') } }); } // scroll