You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
cosmopet-architecture/wp-content/themes/cosmopet/woocommerce/assets/js/gp-main.js

480 lines
15 KiB

'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('<a href="?add-to-cart=' + id + '" class="ajax_add_to_cart add_to_cart_button button button--gradient button--base button--100-perc" data-product_id="'+id+'">Добавить в корзину</a>');
})
$('.product__main').on('click', '.counter__button', function(evt) {
evt.preventDefault();
let product = $(this).closest('.product__item');
let price = parseFloat(product.find('.select__state').data('product_price'));
let qty = product.find('.counter__input');
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);
}
}
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($('<div></div>').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('<div class="wpfFilters"></div>');
$('.wpfMainWrapper').find('.wpfFilterWrapper').appendTo($('.wpfFilters'));
$('.wpfFilterWrapper').each(function () {
if ($(this).data('filter-type') === 'wpfPrice') {
$(this).find('.wpfFilterContent').append('<div class="wpfExpandablePart"></div>');
$(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('.open-to-know', '.modal__to-know');
modalClose('.modal__close');
let modal = document.querySelector('.modal');
modal.onclick = function (event) {
let target = event.target;
if (target.classList.contains('modal')) {
let aside = target.querySelector('.modal__aside'),
modalItem = target.querySelector('.modal__item.active'),
body = document.querySelector('body');
aside.style.width = '0px';
body.classList.remove('overflow-hidden');
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
// overlay
// 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');
// }
// }
// })
// overlay
// 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