303 lines
7.4 KiB
JavaScript
303 lines
7.4 KiB
JavaScript
|
|
// READY FUNCTIONS
|
||
|
|
$(document).ready(function () {
|
||
|
|
homepageHandler();
|
||
|
|
globalHandler();
|
||
|
|
})
|
||
|
|
|
||
|
|
// GLOBAL FUNCTIONS
|
||
|
|
function globalHandler() {
|
||
|
|
swiperProductThumbs();
|
||
|
|
footerArccodion();
|
||
|
|
}
|
||
|
|
|
||
|
|
// FOOTER ARC
|
||
|
|
function footerArccodion() {
|
||
|
|
document.querySelectorAll(".accordion").forEach((acc) => {
|
||
|
|
acc.addEventListener("click", function () {
|
||
|
|
const nextEl = this.nextElementSibling;
|
||
|
|
if (nextEl.style.maxHeight) {
|
||
|
|
nextEl.style.maxHeight = null;
|
||
|
|
nextEl.style.marginBottom = "0px";
|
||
|
|
} else {
|
||
|
|
nextEl.style.maxHeight = nextEl.scrollHeight + "px";
|
||
|
|
nextEl.style.marginBottom = "10px";
|
||
|
|
}
|
||
|
|
});
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
function viewMoreContent(target) {
|
||
|
|
let htmlStaticBlock = $(target).find(".static-html");
|
||
|
|
let viewMoreBtn = $(target).find(".js-view-more-content");
|
||
|
|
|
||
|
|
htmlStaticBlock.toggleClass("max-height-none").toggleClass("blur");
|
||
|
|
viewMoreBtn.html().trim() === "Xem thêm +" ? viewMoreBtn.html("Thu gọn -") : viewMoreBtn.html("Xem thêm +");
|
||
|
|
if (!$(".static-html").hasClass("max-height-none")) document.querySelector(target).scrollIntoView({ behavior: 'smooth' });
|
||
|
|
}
|
||
|
|
|
||
|
|
function swiperProductThumbs() {
|
||
|
|
new Swiper(".swiper-product-thumbs", {
|
||
|
|
slidesPerView: 1,
|
||
|
|
spaceBetween: 10,
|
||
|
|
rewind: true,
|
||
|
|
speed: 1000,
|
||
|
|
autoplay: {
|
||
|
|
delay: 2500,
|
||
|
|
disableOnInteraction: false,
|
||
|
|
pauseOnMouseEnter: "true",
|
||
|
|
},
|
||
|
|
pagination: {
|
||
|
|
el: ".swiper-pagination",
|
||
|
|
clickable: true,
|
||
|
|
},
|
||
|
|
breakpoints: {
|
||
|
|
768: {
|
||
|
|
spaceBetween: 12,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
// HOMEAPGE FUNCTIONS
|
||
|
|
function homepageHandler() {
|
||
|
|
swiperSectionHero();
|
||
|
|
swiperSectionHomepageBanner();
|
||
|
|
}
|
||
|
|
|
||
|
|
function swiperSectionHero() {
|
||
|
|
new Swiper(".swiper-section-hero", {
|
||
|
|
slidesPerView: 1,
|
||
|
|
spaceBetween: 10,
|
||
|
|
rewind: true,
|
||
|
|
speed: 1000,
|
||
|
|
autoplay: {
|
||
|
|
delay: 2500,
|
||
|
|
disableOnInteraction: false,
|
||
|
|
pauseOnMouseEnter: "true",
|
||
|
|
},
|
||
|
|
breakpoints: {
|
||
|
|
768: {
|
||
|
|
spaceBetween: 12,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
function swiperSectionHomepageBanner() {
|
||
|
|
new Swiper(".swiper-section-homepage-banner", {
|
||
|
|
slidesPerView: 1,
|
||
|
|
spaceBetween: 10,
|
||
|
|
rewind: true,
|
||
|
|
speed: 1000,
|
||
|
|
autoplay: {
|
||
|
|
delay: 2500,
|
||
|
|
disableOnInteraction: false,
|
||
|
|
pauseOnMouseEnter: "true",
|
||
|
|
},
|
||
|
|
breakpoints: {
|
||
|
|
768: {
|
||
|
|
spaceBetween: 12,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
// CATEGORY
|
||
|
|
function categoryHandler() {
|
||
|
|
$('.js-filter-title').click(function () {
|
||
|
|
var check = $(this).parents('.item');
|
||
|
|
if (check.hasClass('active') == true) {
|
||
|
|
check.removeClass('active');
|
||
|
|
$('.product-cate-bannner, .box-product-hot, .p-filter-group').removeClass('active');
|
||
|
|
} else {
|
||
|
|
$('.filter-list-box .item').removeClass('active')
|
||
|
|
$(this).parents('.item').addClass('active')
|
||
|
|
$('.product-cate-bannner, .box-product-hot, .p-filter-group').addClass('active');
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
$('.js-sort-check .sort-by-list a').each(function () {
|
||
|
|
if ($(this).hasClass('current') == true) {
|
||
|
|
var name = $(this).text();
|
||
|
|
$('.js-sort-check span').text(name)
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
$('.js-filter-selected').click(function () {
|
||
|
|
if ($(this).hasClass('current') == true) {
|
||
|
|
$(this).removeClass('current');
|
||
|
|
} else {
|
||
|
|
$(this).parents('.js-filter-item').find('.js-filter-selected').removeClass('current');
|
||
|
|
$(this).addClass('current');
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
$(".popup-filter-group").on("click", function (e) {
|
||
|
|
if (e.target === document.querySelector(".popup-filter-group")) {
|
||
|
|
$(".popup-filter-group").css("display", "none");
|
||
|
|
$("body").removeClass("overflow-hidden");
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
// CHECK VIEW MORE POPUP
|
||
|
|
function filterPopupListViewMore() {
|
||
|
|
$(".list-holder").each(function () {
|
||
|
|
let summaryHeight = $(this).height();
|
||
|
|
if (summaryHeight >= 133) {
|
||
|
|
} else {
|
||
|
|
$(this).next().css("display", "none");
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
// ONCLICK VIEW MORE POPUP
|
||
|
|
function showFilterMoreBtn(_this) {
|
||
|
|
$(_this).prev().toggleClass("view-more");
|
||
|
|
let viewMoreEle = $(_this).find(".js-view-more-popup");
|
||
|
|
let viewMoreIcon = $(_this).find(".fa-angle-double-down");
|
||
|
|
|
||
|
|
viewMoreEle.html() === "Xem thêm" ? viewMoreEle.html("Thu gọn") : viewMoreEle.html("Xem thêm");
|
||
|
|
viewMoreIcon.toggleClass("rotate-90deg");
|
||
|
|
}
|
||
|
|
|
||
|
|
// filter
|
||
|
|
function _getLink(current_url) {
|
||
|
|
var brand = 'brand=';
|
||
|
|
var max = '&max=';
|
||
|
|
var min = '&min=';
|
||
|
|
var attr = '&filter=';
|
||
|
|
|
||
|
|
if ($('.js-brand-list a').hasClass('current') == true) {
|
||
|
|
brand = '&brand=' + $('.js-brand-list .current').attr('data-brand');
|
||
|
|
}
|
||
|
|
|
||
|
|
if ($('.js-price-list a').hasClass('current') == true) {
|
||
|
|
max = '&max=' + $('.js-price-list .current').attr('data-max');
|
||
|
|
}
|
||
|
|
|
||
|
|
if ($('.js-price-list a').hasClass('current') == true) {
|
||
|
|
min = '&min=' + $('.js-price-list .current').attr('data-min');
|
||
|
|
}
|
||
|
|
|
||
|
|
$('.js-attr-list .current').each(function () {
|
||
|
|
attr += $(this).attr('data-attr') + '_'
|
||
|
|
});
|
||
|
|
|
||
|
|
var sort = '';
|
||
|
|
if (GetURLParameter('sort')) {
|
||
|
|
sort = '&sort=' + GetURLParameter('sort')
|
||
|
|
}
|
||
|
|
|
||
|
|
var link = current_url + brand + max + min + attr + sort;
|
||
|
|
|
||
|
|
location.href = link;
|
||
|
|
}
|
||
|
|
|
||
|
|
function _openFilter() {
|
||
|
|
$('.popup-filter-group').fadeIn(150);
|
||
|
|
$('body').addClass('overflow-hidden');
|
||
|
|
$('#js-p-filter-group .item.active').removeClass('active');
|
||
|
|
$('.product-cate-bannner, .box-product-hot, .p-filter-group').removeClass('active');
|
||
|
|
filterPopupListViewMore();
|
||
|
|
}
|
||
|
|
|
||
|
|
function _closeFilter() {
|
||
|
|
$('.popup-filter-group').hide();
|
||
|
|
$('body').removeClass('overflow-hidden bg-filter');
|
||
|
|
}
|
||
|
|
// end filter
|
||
|
|
|
||
|
|
function GetURLParameter(sParam) {
|
||
|
|
var sPageURL = window.location.search.substring(1);
|
||
|
|
var sURLVariables = sPageURL.split('&');
|
||
|
|
for (var i = 0; i < sURLVariables.length; i++) {
|
||
|
|
var sParameterName = sURLVariables[i].split('=');
|
||
|
|
if (sParameterName[0] == sParam) {
|
||
|
|
return sParameterName[1];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// PRODUCT DETAIL
|
||
|
|
function detailHandler() {
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
let galleryThumbs = new Swiper(".gallery-thumbs", {
|
||
|
|
spaceBetween: 12,
|
||
|
|
slidesPerView: 4,
|
||
|
|
slideToClickedSlide: true,
|
||
|
|
freeMode: true,
|
||
|
|
watchSlidesProgress: true,
|
||
|
|
centerInsufficientSlides: true,
|
||
|
|
breakpoints: {
|
||
|
|
1600: {
|
||
|
|
spaceBetween: 16,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
});
|
||
|
|
|
||
|
|
let galleryTop = new Swiper(".gallery-top", {
|
||
|
|
spaceBetween: 12,
|
||
|
|
slidesPerView: 1,
|
||
|
|
speed: 1000,
|
||
|
|
autoplay: {
|
||
|
|
delay: 2500,
|
||
|
|
disableOnInteraction: false,
|
||
|
|
pauseOnMouseEnter: "true",
|
||
|
|
},
|
||
|
|
breakpoints: {
|
||
|
|
1600: {
|
||
|
|
spaceBetween: 16,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
thumbs: {
|
||
|
|
swiper: galleryThumbs,
|
||
|
|
},
|
||
|
|
// AUTO SILDED AT FISRT AND END
|
||
|
|
on: {
|
||
|
|
slideChange: function () {
|
||
|
|
let activeIndex = this.activeIndex + 1;
|
||
|
|
|
||
|
|
let activeSlide = document.querySelector(
|
||
|
|
`.gallery-thumbs .swiper-slide:nth-child(${activeIndex})`
|
||
|
|
);
|
||
|
|
let nextSlide = document.querySelector(
|
||
|
|
`.gallery-thumbs .swiper-slide:nth-child(${activeIndex + 1})`
|
||
|
|
);
|
||
|
|
let prevSlide = document.querySelector(
|
||
|
|
`.gallery-thumbs .swiper-slide:nth-child(${activeIndex - 1})`
|
||
|
|
);
|
||
|
|
|
||
|
|
if (
|
||
|
|
nextSlide &&
|
||
|
|
!nextSlide.classList.contains("swiper-slide-visible")
|
||
|
|
) {
|
||
|
|
this.thumbs.swiper.slideNext();
|
||
|
|
} else if (
|
||
|
|
prevSlide &&
|
||
|
|
!prevSlide.classList.contains("swiper-slide-visible")
|
||
|
|
) {
|
||
|
|
this.thumbs.swiper.slidePrev();
|
||
|
|
}
|
||
|
|
},
|
||
|
|
},
|
||
|
|
});
|
||
|
|
|
||
|
|
function toggleAttr(target, _this) {
|
||
|
|
$('[data-type="attr-item-content"]').addClass('d-none');
|
||
|
|
$(target).toggleClass('d-none');
|
||
|
|
$(_this).closest('.attr-list-name').find('.title').removeClass('active');
|
||
|
|
$(_this).addClass('active');
|
||
|
|
}
|
||
|
|
|
||
|
|
// CART
|
||
|
|
function cartHandler() {
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
function toggleDisplay(target) {
|
||
|
|
$(target).toggleClass('d-none');
|
||
|
|
}
|