Files
lulandia.pl/themes/leo_lulandia/assets/js/custom.js
2025-10-29 23:03:26 +01:00

1149 lines
30 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* @Website: apollotheme.com - prestashop template provider
* @author Apollotheme <apollotheme@gmail.com>
* @copyright Apollotheme
* @description: ApPageBuilder is module help you can build content for your shop
*/
/*
* Custom code goes here.
* A template should always ship with an empty custom.js
*/
//DONGND:: create option for slick slider of modal popup at product page
var options_modal_product_page = {
speed: 300,
dots: false,
infinite: false,
slidesToShow: 4,
slidesToScroll: 1,
vertical: true,
verticalSwiping: true,
responsive: [
{
breakpoint: 1200,
settings: {
slidesToShow: 3,
slidesToScroll: 1,
},
},
{
breakpoint: 992,
settings: {
slidesToShow: 2,
slidesToScroll: 1,
},
},
{
breakpoint: 768,
settings: {
slidesToShow: 2,
slidesToScroll: 1,
},
},
{
breakpoint: 576,
settings: {
slidesToShow: 1,
slidesToScroll: 1,
},
},
{
breakpoint: 480,
settings: {
slidesToShow: 2,
slidesToScroll: 1,
},
},
{
breakpoint: 400,
settings: {
slidesToShow: 1,
slidesToScroll: 1,
},
},
],
}
//DONGND:: create option for slick slider of quickview
var options_quickview = {
speed: 300,
dots: false,
infinite: false,
slidesToShow: 4,
slidesToScroll: 1,
vertical: true,
verticalSwiping: true,
responsive: [
{
breakpoint: 1200,
settings: {
slidesToShow: 4,
slidesToScroll: 1,
},
},
{
breakpoint: 992,
settings: {
slidesToShow: 3,
slidesToScroll: 1,
},
},
{
breakpoint: 768,
settings: {
slidesToShow: 4,
slidesToScroll: 1,
},
},
{
breakpoint: 576,
settings: {
slidesToShow: 3,
slidesToScroll: 1,
},
},
{
breakpoint: 480,
settings: {
slidesToShow: 2,
slidesToScroll: 1,
},
},
],
}
$(window).resize(function () {
//DONGND:: fix zoom, only work at product page
if (prestashop.page.page_name == 'product') restartElevateZoom()
//DONGND:: fix lost slider of modal when resize
if (
$('#product-modal .product-images').hasClass('slick-initialized') &&
$('#product-modal .product-images').height() == 0
) {
//DONGND:: setup slide for product thumb (modal)
$('#product-modal .product-images').slick('unslick')
$('#product-modal .product-images').hide()
initSlickProductModal()
}
})
$(document).ready(function () {
var scrollPosition = $(window).scrollTop()
var headerNav = $('#header .header-nav')
var headerTop = $('#header .header-top')
var headerHeight = $('#header').outerHeight()
var boxSlider = $('#header .box-slider')
$('#header').css({
'min-height': headerHeight,
})
$(window).scroll(function (event) {
scrollPosition = $(window).scrollTop()
if (scrollPosition > 0) {
$(headerNav).addClass('fixed')
$(headerTop).addClass('fixed')
$(headerTop).css({
top: $(headerNav).outerHeight(),
})
$(boxSlider).css({
cssText: `margin-top: ${
$(headerNav).outerHeight() + $(headerTop).outerHeight()
}px !important`,
})
} else {
$(headerNav).removeClass('fixed')
$(headerTop).removeClass('fixed')
$(boxSlider).css({
'margin-top': 0,
})
}
})
})
$(document).ready(function () {
floatHeader()
backtotop()
//check page product only
if (prestashop.page.page_name == 'product') {
innitSlickandZoom()
}
if (prestashop.page.page_name == 'category') {
setDefaultListGrid()
}
if (typeof products_list_functions != 'undefined') {
for (var i = 0; i < products_list_functions.length; i++) {
products_list_functions[i]()
}
}
//DONGND:: update for order page - tab adress, when change adress, block adress change class selected
$('.address-item .radio-block').click(function () {
if (!$(this).parents('.address-item').hasClass('selected')) {
$('.address-item.selected').removeClass('selected')
$(this).parents('.address-item').addClass('selected')
}
})
//DONGND:: loading quickview
actionQuickViewLoading()
prestashop.on('updateProductList', function () {
actionQuickViewLoading()
})
prestashop.on('updatedProduct', function () {
if ($('.quickview.modal .product-thumb-images').length) {
//DONGND:: run slick slider for product thumb - quickview
initSlickProductQuickView()
} else if ($('.product-detail .product-thumb-images').length) {
//DONGND:: re-call setup slick when change attribute at product page
innitSlickandZoom()
}
})
//DONGND:: display modal by config
if (typeof $('#content').data('templatemodal') != 'undefined') {
if (!$('#content').data('templatemodal')) {
$('div[data-target="#product-modal"]').hide()
}
}
//DONGND:: create demo product detail from megamenu
$('.demo-product-detail a').click(function (e) {
if (!$(this).hasClass('updated')) {
e.preventDefault()
var current_url = window.location.href
if (
prestashop.page.page_name == 'product' &&
current_url.indexOf('.html') >= 0
) {
var link_href = $(this).attr('href')
var layout_key_index = link_href.indexOf('?layout=')
var layout_key_value = link_href.substring(layout_key_index)
current_url = current_url.substring(0, current_url.indexOf('.html'))
var new_url = current_url + '.html' + layout_key_value
window.location.href = new_url
}
}
})
})
function innitSlickandZoom() {
if ($('#main').hasClass('product-image-thumbs')) {
//DONGND:: setup slide for product thumb (main)
$('.product-detail .product-thumb-images').imagesLoaded(function () {
if (typeof check_loaded_main_product != 'undefined') {
clearInterval(check_loaded_main_product)
}
check_loaded_main_product = setInterval(function () {
if ($('.product-detail .product-thumb-images').height() > 0) {
$('.product-detail .product-thumb-images').fadeIn()
clearInterval(check_loaded_main_product)
postion = $('#content').data('templateview')
//DONGND:: add config for over 1200 extra large
numberimage = $('#content').data('numberimage')
numberimage1200 = $('#content').data('numberimage1200')
numberimage992 = $('#content').data('numberimage992')
numberimage768 = $('#content').data('numberimage768')
numberimage576 = $('#content').data('numberimage576')
numberimage480 = $('#content').data('numberimage480')
numberimage360 = $('#content').data('numberimage360')
if (postion !== 'undefined') {
initSlickProductThumb(
postion,
numberimage,
numberimage1200,
numberimage992,
numberimage768,
numberimage576,
numberimage480,
numberimage360
)
}
}
}, 300)
})
//DONGND:: setup slide for product thumb (modal)
initSlickProductModal()
}
//call action zoom
applyElevateZoom()
}
function restartElevateZoom() {
$('.zoomContainer').remove()
applyElevateZoom()
}
function applyElevateZoom() {
if (
$(window).width() <= 991 ||
$('#content').data('templatezoomtype') == 'none'
) {
//DONGND:: remove elevateZoom on mobile
if ($('#main').hasClass('product-image-gallery')) {
if ($('img.js-thumb').data('elevateZoom')) {
var ezApi = $('img.js-thumb').data('elevateZoom')
ezApi.changeState('disable')
$('img.js-thumb').unbind('touchmove')
}
} else {
if ($('#zoom_product').data('elevateZoom')) {
var ezApi = $('#zoom_product').data('elevateZoom')
ezApi.changeState('disable')
$('#zoom_product').unbind('touchmove')
}
}
return false
}
//check if that is gallery, zoom all thumb
//DONGND:: fix zoom, create config
var zt = $('#content').data('templatezoomtype')
var zoom_cursor
var zoom_type
var scroll_zoom = false
var lens_FadeIn = 200
var lens_FadeOut = 200
var zoomWindow_FadeIn = 200
var zoomWindow_FadeOut = 200
var zoom_tint = false
var zoomWindow_Width = 400
var zoomWindow_Height = 400
var zoomWindow_Position = 1
if (zt == 'in') {
zoom_cursor = 'crosshair'
zoom_type = 'inner'
lens_FadeIn = false
lens_FadeOut = false
} else {
zoom_cursor = 'default'
zoom_type = 'window'
zoom_tint = true
zoomWindow_Width = $('#content').data('zoomwindowwidth')
zoomWindow_Height = $('#content').data('zoomwindowheight')
if ($('#content').data('zoomposition') == 'right') {
//DONGND:: update position of zoom window with ar language
if (prestashop.language.is_rtl == 1) {
zoomWindow_Position = 11
} else {
zoomWindow_Position = 1
}
}
if ($('#content').data('zoomposition') == 'left') {
//DONGND:: update position of zoom window with ar language
if (prestashop.language.is_rtl == 1) {
zoomWindow_Position = 1
} else {
zoomWindow_Position = 11
}
}
if ($('#content').data('zoomposition') == 'top') {
zoomWindow_Position = 13
}
if ($('#content').data('zoomposition') == 'bottom') {
zoomWindow_Position = 7
}
if (zt == 'in_scrooll') {
//DONGND:: scroll to zoom does not work on IE
var ua = window.navigator.userAgent
var old_ie = ua.indexOf('MSIE ')
var new_ie = ua.indexOf('Trident/')
if (old_ie > 0 || new_ie > 0) {
// If Internet Explorer, return version number
scroll_zoom = false
} // If another browser, return 0
else {
scroll_zoom = true
}
}
}
if ($('#main').hasClass('product-image-gallery')) {
lens_FadeIn = false
lens_FadeOut = false
zoomWindow_FadeIn = false
zoomWindow_FadeOut = false
}
var zoom_config = {
responsive: true,
cursor: zoom_cursor,
scrollZoom: scroll_zoom,
scrollZoomIncrement: 0.1,
zoomLevel: 1,
zoomType: zoom_type,
gallery: 'thumb-gallery',
lensFadeIn: lens_FadeIn,
lensFadeOut: lens_FadeOut,
zoomWindowFadeIn: zoomWindow_FadeIn,
zoomWindowFadeOut: zoomWindow_FadeOut,
zoomWindowWidth: zoomWindow_Width,
zoomWindowHeight: zoomWindow_Height,
borderColour: '#888',
borderSize: 2,
zoomWindowOffetx: 0,
zoomWindowOffety: 0,
zoomWindowPosition: zoomWindow_Position,
tint: zoom_tint,
}
if ($('#main').hasClass('product-image-gallery')) {
$('img.js-thumb').each(function () {
var parent_e = $(this).parent()
$(this).attr('src', parent_e.data('image'))
$(this).data('type-zoom', parent_e.data('zoom-image'))
})
if ($.fn.elevateZoom !== undefined) {
$('img.js-thumb').elevateZoom(zoom_config)
//DONGND:: fix click a thumb replace all image and add fancybox
$('img.js-thumb').bind('click', function (e) {
var ez = $(this).data('elevateZoom')
$.fancybox(ez.getGalleryList())
return false
})
}
} else {
if ($.fn.elevateZoom !== undefined) {
$('#zoom_product').elevateZoom(zoom_config)
//pass the images to Fancybox
$('#zoom_product').bind('click', function (e) {
var ez = $('#zoom_product').data('elevateZoom')
$.fancybox(ez.getGalleryList())
return false
})
}
}
}
function initSlickProductThumb(
postion,
numberimage,
numberimage1200,
numberimage992,
numberimage768,
numberimage576,
numberimage480,
numberimage360
) {
var vertical = true
var verticalSwiping = true
//DONGND:: update for rtl
var slick_rtl = false
if (postion == 'bottom') {
vertical = false
verticalSwiping = false
}
if (postion == 'none') {
vertical = false
verticalSwiping = false
numberimage =
numberimage1200 =
numberimage992 =
numberimage768 =
numberimage576 =
numberimage480 =
numberimage360 =
1
}
//DONGND:: update for rtl
if (!vertical && prestashop.language.is_rtl == 1) {
slick_rtl = true
}
var slider = $('#thumb-gallery')
slider.slick({
speed: 300,
dots: false,
infinite: false,
slidesToShow: numberimage,
vertical: vertical,
verticalSwiping: verticalSwiping,
slidesToScroll: 1,
rtl: slick_rtl,
responsive: [
{
breakpoint: 1200,
settings: {
slidesToShow: numberimage1200,
slidesToScroll: 1,
},
},
{
breakpoint: 992,
settings: {
slidesToShow: numberimage992,
slidesToScroll: 1,
},
},
{
breakpoint: 768,
settings: {
slidesToShow: numberimage768,
slidesToScroll: 1,
},
},
{
breakpoint: 576,
settings: {
slidesToShow: numberimage576,
slidesToScroll: 1,
},
},
{
breakpoint: 480,
settings: {
slidesToShow: numberimage480,
slidesToScroll: 1,
},
},
{
breakpoint: 360,
settings: {
slidesToShow: numberimage360,
slidesToScroll: 1,
},
},
],
})
$('#thumb-gallery').show()
if (postion == 'none') {
var slickInstance = slider[0]
var slides = $(slickInstance.slick.$slides)
var positionStart = findPosition(slides)
var slideCount = slickInstance.slick.slideCount
//DONGND:: update slick for case without thubms
if (positionStart + 1 == slideCount) {
$('.arrows-product-fake .slick-next').addClass('slick-disabled')
} else if (positionStart == 0) {
$('.arrows-product-fake .slick-prev').addClass('slick-disabled')
}
// active image first load
slider.slick('slickGoTo', positionStart)
$('.arrows-product-fake .slick-next').on('click', function () {
if (!$(this).hasClass('slick-disabled')) {
$('.arrows-product-fake .slick-prev').removeClass('slick-disabled')
var positionCurrent = findPosition(slides)
if (positionCurrent + 1 < slideCount) {
$(slides[positionCurrent]).removeClass('active')
$(slides[positionCurrent + 1]).addClass('active')
$(slides[positionCurrent + 1])
.find('img')
.trigger('click')
slider.slick('slickNext')
if (positionCurrent + 1 == slideCount - 1) {
$(this).addClass('slick-disabled')
}
}
}
})
$('.arrows-product-fake .slick-prev').on('click', function () {
if (!$(this).hasClass('slick-disabled')) {
$('.arrows-product-fake .slick-next').removeClass('slick-disabled')
var positionCurrent = findPosition(slides)
if (positionCurrent > 0) {
$(slides[positionCurrent]).removeClass('active')
$(slides[positionCurrent - 1]).addClass('active')
$(slides[positionCurrent - 1])
.find('img')
.trigger('click')
slider.slick('slickPrev')
if (positionCurrent - 1 == 0) {
$(this).addClass('slick-disabled')
}
}
}
})
}
}
function findPosition(slides) {
var position
for (var i = 0; i < slides.length; i++) {
if ($(slides[i]).hasClass('active')) {
position = $(slides[i]).data('slick-index')
return position
}
}
}
//DONGND:: loading quickview
function actionQuickViewLoading() {
$('.quick-view').click(function () {
if (!$(this).hasClass('active')) {
$(this).addClass('active')
$(this).find('.leo-quickview-bt-loading').css({ display: 'block' })
$(this).find('.leo-quickview-bt-content').hide()
if (typeof check_active_quickview != 'undefined') {
clearInterval(check_active_quickview)
}
check_active_quickview = setInterval(function () {
if ($('.quickview.modal').length) {
$('.quickview.modal').on('hide.bs.modal', function (e) {
$('.quick-view.active').find('.leo-quickview-bt-loading').hide()
$('.quick-view.active').find('.leo-quickview-bt-content').show()
$('.quick-view.active').removeClass('active')
})
clearInterval(check_active_quickview)
//DONGND:: run slick for product thumb - quickview
initSlickProductQuickView()
}
}, 300)
}
})
}
$(document).on('click', '.leo_grid', function (e) {
e.preventDefault()
$('#js-product-list .product_list').removeClass('list')
$('#js-product-list .product_list').addClass('grid')
$(this).parent().find('.leo_list').removeClass('selected')
$(this).addClass('selected')
var configName = LEO_COOKIE_THEME + '_grid_list'
$.cookie(configName, 'grid', { expires: 1, path: '/' })
})
$(document).on('click', '.leo_list', function (e) {
e.preventDefault()
$('#js-product-list .product_list').removeClass('grid')
$('#js-product-list .product_list').addClass('list')
$(this).parent().find('.leo_grid').removeClass('selected')
$(this).addClass('selected')
var configName = LEO_COOKIE_THEME + '_grid_list'
$.cookie(configName, 'list', { expires: 1, path: '/' })
})
function setDefaultListGrid() {
if ($.cookie(LEO_COOKIE_THEME + '_grid_list') == 'grid') {
$('.leo_grid').trigger('click')
}
if ($.cookie(LEO_COOKIE_THEME + '_grid_list') == 'list') {
$('.leo_list').trigger('click')
}
}
function processFloatHeader(headerAdd, scroolAction) {
//DONGND:: hide search result when enable float header
if ($('.ac_results').length) {
$('.ac_results').hide()
}
if (headerAdd) {
$('#header').addClass('navbar-fixed-top')
var hideheight = $('#header').height() + 120
$('#page').css('padding-top', $('#header').height())
setTimeout(function () {
$('#page').css('padding-top', $('#header').height())
}, 200)
} else {
$('#header').removeClass('navbar-fixed-top')
$('#page').css('padding-top', '')
}
var pos = $(window).scrollTop()
if (scroolAction && pos >= hideheight) {
$('.header-nav').addClass('hide-bar')
$('.hide-bar').css('margin-top', -$('.header-nav').height())
$('#header').addClass('mini-navbar')
} else {
$('.header-nav').removeClass('hide-bar')
$('.header-nav').css('margin-top', 0)
$('#header').removeClass('mini-navbar')
}
}
//Float Menu
function floatHeader() {
if (!$('body').hasClass('keep-header') || $(window).width() <= 990) {
return
}
$(window).resize(function () {
if ($(window).width() <= 990) {
processFloatHeader(0, 0)
} else if ($(window).width() > 990) {
if ($('body').hasClass('keep-header')) processFloatHeader(1, 1)
}
})
var headerScrollTimer
$(window).scroll(function () {
if (headerScrollTimer) {
window.clearTimeout(headerScrollTimer)
}
headerScrollTimer = window.setTimeout(function () {
if (!$('body').hasClass('keep-header')) return
if ($(window).width() > 990) {
processFloatHeader(1, 1)
}
}, 100)
})
}
// Back to top
function backtotop() {
$('#back-top').hide()
$(window).scroll(function () {
if ($(this).scrollTop() > 100) {
$('#back-top').fadeIn()
} else {
$('#back-top').fadeOut()
}
})
// scroll body to 0px on click
$('#back-top a').click(function () {
$('body,html').animate(
{
scrollTop: 0,
},
800
)
return false
})
}
//DONGND:: build slick slider for quickview
function initSlickProductQuickView() {
$('.quickview.modal .product-thumb-images').imagesLoaded(function () {
if (typeof check_loaded_thumb_quickview != 'undefined') {
clearInterval(check_loaded_thumb_quickview)
}
check_loaded_thumb_quickview = setInterval(function () {
if ($('.quickview.modal .product-thumb-images').height() > 0) {
$('.quickview.modal .product-thumb-images').fadeIn()
clearInterval(check_loaded_thumb_quickview)
$('.quickview.modal .product-thumb-images').slick(options_quickview)
}
}, 300)
})
}
//DONGND:: build slick slider for modal - product page
function initSlickProductModal() {
$('#product-modal .product-images').imagesLoaded(function () {
if (typeof check_loaded_thumb_modal != 'undefined') {
clearInterval(check_loaded_thumb_modal)
}
check_loaded_thumb_modal = setInterval(function () {
if ($('#product-modal .product-images').height() > 0) {
$('#product-modal .product-images').fadeIn()
clearInterval(check_loaded_thumb_modal)
$('#product-modal .product-images').slick(options_modal_product_page)
}
}, 300)
})
}
//DONGND: fix base prestashop
$(document).ready(function () {
//DONGND: remove css inline of label
$('.product-flag').removeAttr('style')
prestashop.on('updateProductList', function () {
//DONGND: remove css inline of label
$('.product-flag').removeAttr('style')
})
})
//Fix translate button choose file to upload: change "Choose file" to choosefile_text
//Fix filter (category page) does not work on IE change dataset.searchUrl to getAttribute('data-search-url')
const menuElements = document.querySelectorAll('.nav.megamenu.horizontal li')
const bodyContainer = document.querySelector('body#index')
const removeActive = () => {
for (const menuElement of menuElements) {
menuElement.classList.remove('active')
}
}
window.addEventListener('DOMContentLoaded', (event) => {
if (bodyContainer != null) {
removeActive()
}
const labelNope = document.querySelector(
'.PM_ASBlockOutputVertical label[for="as4c_9_116"] a'
)
if (labelNope) {
labelNope.innerHTML = 'nie'
}
})
$(document).on(
'change',
'.product-variants [data-product-attribute]',
function (event) {
var query =
$(event.target.form).serialize() + '&ajax=1&action=productrefresh'
var actionURL = $(event.target.form).attr('action')
$.post(actionURL, query, null, 'json').then(function (resp) {
var productUrl = resp.productUrl
$.post(productUrl, { ajax: '1', action: 'refresh' }, null, 'json').then(
function (resp) {
console.log('test')
window.location.href = productUrl
}
)
})
}
)
// const rodzajLabel = document.querySelector('.category-id-45 .PM_ASBlockOutputVertical .PM_ASCriterionsGroup:first-child .PM_ASCriterionsGroupTitle span');
// if(rodzajLabel) {
// console.log(rodzajLabel);
// rodzajLabel.innerHTML = 'Producent';
// }
const aliorCalc = document.querySelector('#raty_alior')
if (aliorCalc) {
const productPrice = document
.querySelector('.product-prices .current-price span[itemprop="price"]')
.getAttribute('content')
let aliorUrl = aliorCalc.getAttribute('href')
aliorUrl += '?cartValue=' + productPrice
aliorCalc.setAttribute('href', aliorUrl)
}
// const scrollButton = document.querySelector('.js-scroll-trigger');
// if(scrollButton) {
// console.log('scroll');
// var scroll = new SmoothScroll('.js-scroll-trigger', {
// offset: 240,
// });
// }
// $(document).ready(function(){
// if($(".block-promo .cart-voucher").length) {
// $(".block-promo .cart-voucher .promo-code-button.display-promo .collapse-button").on("click", function(e){
// e.preventDefault();
// $("#promo-code").addClass('in')
// })
// }
// })
$(document).ready(function () {
if ($('#buy-by-phone-popup').length) {
var buyByPhonePopup = $('#buy-by-phone-popup')
$('#buy_by_phone_btn').on('click', function (e) {
$('#buy-by-phone-popup').find('input[name="buy-by-phone-name"]').val('')
$('#buy-by-phone-popup').find('input[name="buy-by-phone-phone"]').val('')
$('#buy-by-phone-popup').find('input[name="contact-time"]').val('')
$('#buy-by-phone-popup').find('input[name="product-name"]').val('')
$('#buy-by-phone-popup').find('input[name="shipping-address"]').val('')
$('#buy-by-phone-popup').find('input[name="phone-for-courier"]').val('')
$('#buy-by-phone-popup').find('input[name="email"]').val('')
$('#buy-by-phone-popup').find('input[name="comments-to-order"]').val('')
$('#buy-by-phone-popup .popup-footer').empty()
$('#buy-by-phone-popup')
.find('input[name="polityka"]')
.prop('checked', false)
buyByPhonePopup.addClass('active')
})
$('.close-popup', buyByPhonePopup).on('click', function (e) {
e.preventDefault()
buyByPhonePopup.removeClass('active')
})
$('.close-popup-alert', buyByPhonePopup).on('click', function (e) {
e.preventDefault()
$('.popup-alert', buyByPhonePopup).removeClass('active')
})
$('#buy-by-phone-form-btn').on('click', function (e) {
e.preventDefault()
$('#buy-by-phone-popup .popup-footer').empty()
var name = $('#buy-by-phone-popup')
.find('input[name="buy-by-phone-name"]')
.val()
var phone = $('#buy-by-phone-popup')
.find('input[name="buy-by-phone-phone"]')
.val()
var contact_time = $('#buy-by-phone-popup')
.find('input[name="contact-time"]')
.val()
var politics = $('#buy-by-phone-popup')
.find('input[name="polityka"]')
.prop('checked')
if (!phone) {
popupAlert('<p>Proszę wypełnić wymagane pola formularza</p>')
return
}
if (!politics) {
popupAlert('<p>Proszę wypełnić wymagane pola formularza</p>')
return
}
$(this).prop('disabled', true)
var formData = $('#buy-by-phone-form').serialize()
$.ajax({
type: 'POST',
url: '/buy-by-phone.php',
data: formData,
success: function (response) {
popupAlert(response)
$('#buy-by-phone-form-btn').prop('disabled', false)
setTimeout(function () {
buyByPhonePopup.removeClass('active')
}, 5000)
},
error: function () {
popupAlert('<p>Wystąpił błąd podczas wysyłania danych</p>')
$('#buy-by-phone-form-btn').prop('disabled', false)
},
})
})
function popupAlert(text) {
$('.popup-alert', buyByPhonePopup).addClass('active')
$('.popup-alert .popup-alert-data', buyByPhonePopup).empty()
$('.popup-alert .popup-alert-data', buyByPhonePopup).append(text)
setTimeout(function () {
$('.popup-alert', buyByPhonePopup).removeClass('active')
}, 3000)
}
}
})
$(document).ready(function () {
if ($('#box-accessories-slider').length) {
var accessoriesSlider = $('#box-accessories-slider')
var accessoriesVisible = false
$('#box-product-accessories .buy-protector-btn').on('click', function () {
if (!accessoriesVisible) {
$('#box-accessories-slider').slideDown()
accessoriesSlider.slick({
infinite: true,
slidesToShow: 2,
slidesToScroll: 1,
})
accessoriesVisible = true
} else {
$('#box-accessories-slider').slideUp()
accessoriesSlider.slick('unslick')
accessoriesVisible = false
}
})
}
})
$(document).ready(function () {
if ($('#featured-products-box').length) {
var featuredSlider = $('#featured-products-box')
$('.featured-products-box-slider', featuredSlider).slick({
infinite: false,
slidesToShow: 4,
slidesToScroll: 4,
responsive: [
{
breakpoint: 992,
settings: {
slidesToShow: 3,
slidesToScroll: 3,
},
},
{
breakpoint: 768,
settings: {
slidesToShow: 2,
slidesToScroll: 2,
},
},
{
breakpoint: 480,
settings: {
slidesToShow: 1,
slidesToScroll: 1,
},
},
],
})
}
})
$(function () {
$('body').on('click', '.payment-options .payment-option', function () {
$('.payment-options .payment-option').removeClass('active')
$(this).addClass('active')
})
})
document.addEventListener('DOMContentLoaded', function () {
if (window.innerWidth < 491) {
var leoSearch = document.getElementById('leo_search_block_top')
console.log(leoSearch)
var searchWidget = document.getElementById('search_widget')
if (leoSearch && searchWidget) {
searchWidget.appendChild(leoSearch)
}
}
})
prestashop.on('updateCart', function (event) {
// np. aktualizacja DOM lub całkowity reload:
location.reload() // najprostsze rozwiązanie
})
$(document).ready(function () {
$('body').on(
'click',
'#box-product-accessories .buy-protector-btn',
function (e) {
let selectedSize = $(
'#add-to-cart-or-refresh .product-variants .product-variants-item select#group_3 option:selected'
)
.text()
.trim()
localStorage.removeItem('selectedSize')
localStorage.setItem('selectedSize', JSON.stringify(selectedSize))
}
)
if (localStorage.getItem('selectedSize')) {
let savedSize = JSON.parse(localStorage.getItem('selectedSize'))
let $select = $(
'#add-to-cart-or-refresh .product-variants .product-variants-item select#group_3'
)
$select.find('option').each(function () {
if ($(this).text().trim() === savedSize) {
$(this).prop('selected', true).trigger('change')
return false
}
})
localStorage.removeItem('selectedSize')
}
});
(() => {
// Ustaw na true, jeśli Twój motyw/moduł wymaga faktycznego submitu "Wybierz"
const FORCE_SUBMIT_TO_SELECT = false;
const isVisible = (el) => {
if (!el) return false;
const s = getComputedStyle(el);
if (s.display === 'none' || s.visibility === 'hidden') return false;
const r = el.getBoundingClientRect();
return !!(r.width || r.height || el.getClientRects().length);
};
const getContainer = () =>
document.querySelector('#checkout-payment-step .payment-options, .payment-options');
const getRows = () => {
const c = getContainer();
if (!c) return [];
return [...c.querySelectorAll('.payment-option')].filter(isVisible);
};
const fireAll = (el) => {
// Maksymalnie „głośno”: click + input + change (bubbles)
el.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window }));
el.dispatchEvent(new Event('input', { bubbles: true }));
el.dispatchEvent(new Event('change', { bubbles: true }));
};
const pickRow = (row) => {
if (!row) return false;
const radio = row.querySelector('input[name="payment-option"][type="radio"]');
if (!radio) return false;
// 1) „Fizyczny” klik w radio
radio.focus();
radio.click(); // często wystarcza
radio.checked = true; // twardo ustaw
fireAll(radio); // wyślij eventy
// 2) Dopnij .active, jeśli motyw nie zrobił tego sam
row.classList.add('active');
// 3) (opcjonalnie) wyślij ukryty "Wybierz"
if (FORCE_SUBMIT_TO_SELECT) {
const btn = row.querySelector('button[name="select_payment_option"]');
if (btn && isVisible(btn) || btn) {
btn.click(); // UWAGA: może przeładować sekcję / stronę wg motywu
}
}
return true;
};
const run = () => {
const rows = getRows();
if (!rows.length) return;
// Jeśli jest tylko jedna wybierz ją
if (rows.length === 1) {
pickRow(rows[0]);
return;
}
// Jeśli jakaś ma już .active dopilnuj, że radio naprawdę zaznaczone
const active = rows.find(r => r.classList.contains('active')) || null;
if (active) {
const radio = active.querySelector('input[name="payment-option"][type="radio"]');
if (radio && !radio.checked) pickRow(active);
}
};
// start + kilka retry (czasem bindingi dochodzą z opóźnieniem)
run();
setTimeout(run, 80);
setTimeout(run, 200);
setTimeout(run, 450);
// Obserwator przebudów sekcji płatności
const target = document.querySelector('#checkout-payment-step') || document.body;
let t;
const obs = new MutationObserver((muts) => {
if (muts.some(m =>
m.target?.closest?.('#checkout-payment-step') ||
[...m.addedNodes].some(n => n.nodeType === 1 && (n.id === 'checkout-payment-step' || n.querySelector?.('.payment-options')))
)) {
clearTimeout(t);
t = setTimeout(run, 60);
}
});
obs.observe(target, { childList: true, subtree: true, attributes: true, attributeFilter: ['class','style'] });
})();