ldc-boutique-cnc-themes/js/app.js
2022-03-18 14:31:17 +01:00

274 lines
6.4 KiB
JavaScript

import { isWindow } from 'jquery';
import Swiper from 'swiper/swiper-bundle';
import Toastify from "toastify-js";
require('./bootstrap');
// cookie notice
import { LdcwebCn } from "./ldcweb-cn.js";
window.LdcwebCn = LdcwebCn;
require('./cart.js');
window.Toastify = Toastify;
window.Vue = require('vue');
// Vuex
import Vuex from 'vuex';
Vue.component('timeslot-picker', require('./components/TimeSlotPicker.vue').default);
Vue.component('basket-panel', require('./components/BasketPanel.vue').default);
Vue.component('quick-order', require('./components/QuickOrder.vue').default);
Vue.component('basket-counter', {
computed: {
count() {
return this.$store.state.cartTotals.countItems;
}
},
mounted: function() {
console.log('Basket Counter Component mounted.');
},
template: '<span class="header-actions__item-icon icon icon_cart"><span class="icon__count">{{ count }}</span></span>'
});
Vue.component('basket-amount', {
computed: {
amount() {
return this.currencyFormatter(this.$store.state.cartTotals.totalTTC);
}
},
mounted: function() {
console.log('Basket Amount Component mounted.');
},
methods: {
currencyFormatter(num) {
if (isNaN(num)) {
return num;
}
return new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR' }).format(num);
}
},
template: '<span>{{ amount }}</span>'
});
const store = new Vuex.Store({
state: {
panier: {},
cartTotals: {},
},
mutations: {
Reload (state,payload) {
state.reload = payload.reload;
},
updatePanier (state, payload) {
state.panier = payload.panier;
},
updateCartTotals (state, payload) {
state.cartTotals = payload.cartTotals;
},
}
});
const app = new Vue({
el: '#app',
store,
data: {
num: 1 //for the numeric stepper on product pages
},
methods: {
addtocart(product,qtty) {
console.log('root add');
this.$refs.basketpanel.addtocart(product,qtty);
},
},
});
//define toast
window.toast = {
duration: 2000,
newWindow: false,
close: true,
className: "notifications",
gravity: "top",
offset: {
x: "2em",
y: "3em"
},
stopOnFocus: false // Authorize dismissing of toast on hover
};
$(document).ready(function(){
//document is ready we can free css transitions
$('.preload').removeClass("preload");
var mainslider = new Swiper ('.mainslider .swiper-container', {
speed:1000,
direction: 'horizontal',
zoom: true,
keyboard:
{
enabled: true,
onlyInViewport: false,
},
mousewheel:
{
invert: true,
},
autoplay:
{
delay: 5000,
},
loop: true,
pagination: {
el: '.mainslider__pagination',
bulletClass: 'slider-bullet',
bulletActiveClass: 'slider-bullet_active',
clickable: true
},
});
var rp_slider = new Swiper ('.rp-slider .swiper-container', {
slidesPerView: 4,
spaceBetween: 40,
navigation: {
nextEl: '.rp-slider .swiper-nav__arrow_next',
prevEl: '.rp-slider .swiper-nav__arrow_prev',
disabledClass: 'disabled'
},
breakpoints: {
320: {
slidesPerView: 2,
spaceBetween: 10
},
/*480: {
spaceBetween: 30
},*/
480: {
slidesPerView: 2,
spaceBetween: 12
},
768: {
slidesPerView: 3,
spaceBetween: 16
},
1000: {
spaceBetween: 25,
slidesPerView: 3
},
1180: {
spaceBetween: 30
}
}
});
var rp_slider_mobile = new Swiper ('.related-products-mobile .swiper-container', {
slidesPerView: 4,
spaceBetween: 20,
navigation: {
nextEl: '.related-products-mobile .swiper-nav__arrow_next',
prevEl: '.related-products-mobile .swiper-nav__arrow_prev',
disabledClass: 'disabled'
},
breakpoints: {
320: {
slidesPerView: 2,
spaceBetween: 10
},
/* 480: {
spaceBetween: 30
},*/
480: {
slidesPerView: 'auto',
spaceBetween: 12
},
768: {
slidesPerView: 'auto',
spaceBetween: 16
},
1000: {
spaceBetween: 25,
slidesPerView: 3
},
1180: {
spaceBetween: 30
}
}
});
$(document).on("click", ".menu-trigger", function(){
$(this).toggleClass("active");
$(".menu").slideToggle();
});
// $(document).on("click", ".product__qty-btn", function(){
// _value = parseInt($('.product__qty-input').val());
// if(isNaN(_value) || _value <= 0) {
// _value = 1;
// }
// if ($(this).hasClass('product__qty-btn_plus')) {
// _value += 1;
// } else {
// if(_value > 1) {
// _value -= 1;
// }
// }
// $('.product__qty-input').val(_value);
// });
$(document).on("click", ".accordeon-block__title", function(){
$(this).closest('.accordeon-block').toggleClass("active");
$(this).next('.accordeon-block__content').slideToggle();
});
$(document).mouseup(function(e) {
var container = $(".form-message");
if (!container.is(e.target) && container.has(e.target).length === 0) {
container.hide();
}
});
$(document).mouseup(function(e) {
var container = $(".form-result");
if (!container.is(e.target) && container.has(e.target).length === 0) {
container.hide();
}
});
let fileInput = document.querySelector(".form__upload-field .file-source");
if (fileInput) {
let fileArea = document.querySelector(".form__upload-field .file-name");
fileInput.onchange = function() {
if(fileInput.files.length != 0) {
if(fileInput.files[0].size > 10485760) {
fileArea.value = "La taille du fichier est trop grande";
} else {
fileArea.value = fileInput.files[0].name;
}
}
}
}
$(document).on("click", ".tc-text__readmore", function(){
$(this).closest('.tc-text').addClass("active");
$(this).remove();
});
//cart close actions
$('.basket-panel__close').on('click',closeCart);
$('.basket-panel__mask').on('click',closeCart);
//cart opened actions
$('.promotion-description__labels').hover(showPromoInfo,hidePromoInfo);
$('.basket-panel__content--smooth-scroll').on('scroll',toggleFixingBottomCart);
$('.category-heading__header--collapsable').on('click',toggleProductCategory)
$('.checkout-clear-basket__actions').on('click',showModalClearCart);
$('#checkout-empty-basket-cancel').on('click',closeModalClearCart);
});