/**
Template Name : W3Cart
Author : DexignZone
Version : 1.0
File Name : custom.js
Author Portfolio : https://themeforest.net/user/dexignzone/portfolio
Core script to handle the entire theme and core functions
**/
w3cart = function(){
"use strict"
var screenWidth = $( window ).width();
var screenHeight = $( window ).height();
// Preloader ============
var handlePreloader = function(){
setTimeout(function() {
jQuery('#preloader').fadeOut(300);
},300);
}
// Menubar Toggler ============
var handleMenubar = function() {
jQuery(document).on('click', '.menu-toggler', function() {
jQuery('.sidebar').toggleClass('show');
jQuery('.menu-toggler').toggleClass('show');
jQuery('.dark-overlay').toggleClass('active');
});
jQuery(document).on('click', '.dark-overlay', function() {
jQuery('.menu-toggler,.sidebar').removeClass('show');
jQuery(this).removeClass('active');
});
jQuery(document).on('click', '.nav-color', function() {
jQuery('.dark-overlay').removeClass('active');
});
}
// Show Pass ============
var handleShowPass = function(){
jQuery(document).on('click', '.show-pass', function() {
jQuery(this).toggleClass('active');
if(jQuery(this).parent().find('.dz-password').attr('type') == 'password'){
jQuery(this).parent().find('.dz-password').attr('type','text');
}else if(jQuery(this).parent().find('.dz-password').attr('type') == 'text'){
jQuery(this).parent().find('.dz-password').attr('type','password');
}
});
}
// Sticky Header ============
var handleIsFixed = function(){
$(window).scroll(function() {
var scroll = $(window).scrollTop();
if (scroll >= 50) {
$(".main-bar").addClass("sticky-header");
}else{
$(".main-bar").removeClass("sticky-header");
}
});
}
// Custom File Input ============
var handleCustomFileInput = function() {
$(document).on('change', '.custom-file-input', function() {
var fileName = $(this).val().split("\\").pop();
$(this).siblings(".custom-file-label").addClass("selected").html(fileName);
});
}
// Default Select ============
var handleSelectpicker = function(){
if(jQuery('.default-select').length > 0 ){
jQuery('.default-select').selectpicker();
}
}
// Menubar Nav Active ============
var handleMenubarNav = function() {
$(document).on('click', '..menubar-nav .nav-link', function() {
$(".menubar-nav .nav-link").removeClass("active");
$(this).addClass("active");
});
}
// Message Sheet ============
var handleMessageHandle = function() {
jQuery(document).on('click', '.message-area .icon-popup', function() {
$(".message-icon").slideToggle('slow');
});
jQuery(document).on('change', '.messagebar-sheet-image', function() {
var iconsrc = $(this).attr('data-icon');
if($(this).find('input[type="checkbox"]').is(':checked')) {
$(".append-media").append("

");
}else{
var mediaicon = $('.message-area .emoji-icon[data-icon="'+iconsrc+'"]');
mediaicon.remove();
}
});
}
// Chat Box ============
var handleChatBox = function (){
jQuery(document).on('click', '.btn-chat', function() {
var chatInput = $('.message-area .form-control');
var chatMessageValue = chatInput.val();
var chatEmojiArea = $('.append-media').html();
var current = new Date();
var ampm = current.getHours() >= 12 ? 'pm' : 'am';
var actualTime = (current.getHours()% 12 +':'+current.getMinutes() +' '+ ampm);
var messageEmojiHtml = ''+
'
'+
'
'+chatEmojiArea+'
'+
'
'+actualTime+'
'+
'
'+
'
';
if(chatEmojiArea.length > 0){
$('.chat-box-area').append(messageEmojiHtml);
}
var messageHtml = ''+
'
'+
'
'+chatMessageValue+'
'+
'
'+actualTime+'
'+
'
'+
'
';
if(chatMessageValue.length > 0){
var appendMessage = $('.chat-box-area').append(messageHtml);
}
window.scrollTo(0, document.body.scrollHeight);
var clearChatInput = chatInput.val('');
var clearChatInputE = $('.append-media').empty();
});
}
// Page Back ============
var handleGoBack = function(){
jQuery(document).on('click', '.back-btn', function() {
window.history.go(-1); return false
})
}
// Progressive Web App Modal ============
var handlePWAModal = function (){
if (!window.matchMedia('(display-mode: standalone)').matches) {
setTimeout(function(){
jQuery('.pwa-offcanvas').addClass('show');
jQuery('.pwa-backdrop').addClass('fade show');
}, 3000);
jQuery('.pwa-backdrop, .pwa-close, .pwa-btn').on('click',function(){
jQuery('.pwa-offcanvas').slideUp(500, function() {
jQuery(this).removeClass('show');
});
setTimeout(function(){
jQuery('.pwa-backdrop').removeClass('show');
}, 500);
});
}
}
// Search Form ============
var handleSearch = function(){
$('.search-input .form-control').on('change paste keyup',function(){
if($(this).val().length > 0){
$('.search-input .btn-close').fadeIn(500);
}else{
$('.search-input .btn-close').fadeOut(500);
}
})
$('.search-input .btn-close').on('click',function(){
$('.search-input .form-control').val(null);
$(this).fadeOut(0);
})
}
// Theme Version ============
var handleThemeVersion = function() {
jQuery(document).on('click', '.theme-btn', function() {
jQuery('body').toggleClass('theme-dark');
jQuery('.theme-btn').toggleClass('active');
if (jQuery('body').hasClass('theme-dark')) {
console.log('dark');
document.querySelector("meta[name='theme-color']").setAttribute('content', '#0C101C');
}else {
console.log('no');
document.querySelector("meta[name='theme-color']").setAttribute('content', '#F4F4F4');
}
});
}
var handleThemeVersion2 = function() {
jQuery('.dz-list-group ul li a').on('click',function(){
if($(this).hasClass('theme-change'))
{
jQuery('body').toggleClass('theme-dark');
jQuery('.theme-btn').toggleClass('active');
if (jQuery('body').hasClass('theme-dark')) {
console.log('dark');
document.querySelector("meta[name='theme-color']").setAttribute('content', '#0C101C');
}else {
console.log('no');
document.querySelector("meta[name='theme-color']").setAttribute('content', '#F4F4F4');
}
}
});
}
// Theme Version ============
var handleRemoveClass = function() {
jQuery('.nav-color').on('click',function(){
jQuery('.sidebar, .menu-toggler').removeClass('show');
});
}
// Theme Version ============
var handleToggleButton = function() {
jQuery('.dz-treeview-item').on('click',function(){
jQuery(this).toggleClass('open');
});
}
// Light Gallery ============
var handleLightgallery = function() {
if(jQuery('body #lightgallery').length > 0){
console.log('heree');
lightGallery(document.getElementById('lightgallery'), {
plugins: [lgZoom, lgThumbnail],
});
}
if(jQuery('#lightgallery-2').length > 0){
lightGallery(document.getElementById('lightgallery-2'), {
plugins: [lgZoom, lgThumbnail],
});
}
if(jQuery('#lightgallery-3').length > 0){
lightGallery(document.getElementById('lightgallery-3'), {
plugins: [lgZoom, lgThumbnail],
});
}
if(jQuery('#lightgallery-4').length > 0){
lightGallery(document.getElementById('lightgallery-4'), {
plugins: [lgZoom, lgThumbnail],
});
}
// lightgallery by class name
if(jQuery('.lightgallery').length > 0){
var elements = document.getElementsByClassName('lightgallery');
for (let item of elements) {
lightGallery(item,{
plugins: [lgZoom, lgThumbnail],
})
}
}
}
// Tab Slide ============
var handleTabSlide = function() {
if(jQuery('.tab-slide-effect').length > 0){
var a = $('.tab-slide-effect li.active').width();
var b = $('.tab-slide-effect li.active').position().left;
$('.tab-active-indicator').css({'width' : a,'transform': 'translateX('+b+'px)'});
jQuery(document).on('click', '.tab-slide-effect li', function() {
console.log('click');
var tabItem = $(this).parent().find('li');
$(tabItem).removeClass('active');
$(this).addClass('active');
var x = $(this).width();
var y = $(this).position().left;
var indicator = $(this).parent().find('.tab-active-indicator');
$(indicator).css({'width' : x,'transform': 'translateX('+y+'px)'});
})
}
}
// OTP Input ============
var handleOTP = function() {
if(jQuery('#otp').length > 0)
$('.digit-group').find('input').each(function() {
$(this).attr('maxlength', 1);
$(this).on('keyup', function(e) {
var thisVal = $(this).val();
var parent = $($(this).parent());
if(e.keyCode === 8 || e.keyCode === 37) {
var prev = parent.find('input#' + $(this).data('previous'));
if(prev.length) {
$(prev).select();
}
} else {
var next = parent.find('input#' + $(this).data('next'));
if(!$.isNumeric(thisVal))
{
$(this).val('');
return false;
}
if(next.length) {
$(next).select();
} else {
if(parent.data('autosubmit')) {
parent.submit();
}
}
}
});
});
}
// Input Search ============
var handleSearch = function() {
$("#myInput").on("keyup", function() {
var value = $(this).val().toLowerCase();
$(".recent-jobs-list li").filter(function() {
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
});
if($(this).val().length > 0){
$('.search-input .btn-close').fadeIn(500);
}else{
$('.search-input .btn-close').fadeOut(500);
}
});
$('.search-input .btn-close').on('click',function(){
$(".recent-jobs-list li").filter(function() {
$(this).toggle($(this).text().toLowerCase().indexOf('') > -1)
});
$('.search-input .form-control').val(null);
$(this).fadeOut(0);
})
}
// Input With Image Select ============
var handleImageSelect = function(){
if(jQuery('.image-select').length > 0){
const $_SELECT_PICKER = $('.image-select');
$_SELECT_PICKER.find('option').each((idx, elem) => {
const $OPTION = $(elem);
const IMAGE_URL = $OPTION.attr('data-thumbnail');
if (IMAGE_URL) {
$OPTION.attr('data-content', "
%s".replace(/%i/, IMAGE_URL).replace(/%s/, $OPTION.text()))
}
});
$_SELECT_PICKER.selectpicker();
}
}
// Like Button ============
var handleLikeButton = function (){
$(".item-bookmark").on('click', function(){
$(this).toggleClass("active");
});
}
// TouchSpin ============
var handleTouchSpin = function (){
if(jQuery('.stepper').length > 0){
$(".stepper").TouchSpin({
initval: ''
});
}
}
// Add List ============
var handleTagRemove = function (){
$('.main-in').on('keypress',function(e) {
if(e.which == 13 && $(this).val().length > 0) {
var x = $(this).val();
$('.recent-search-list ul').append(""+x+"");
$(this).val(null);
$(".remove-tag").on('click',function(){
$(this).parent().remove();
})
}
});
}
var handleSnackbar = function (){
$('.snackbar-btn').click(function() {
var pos = $(this).attr('data-pos');
var text = $(this).attr('data-Text');
var bg = $(this).attr('data-Bg');
var actionText = $(this).attr('data-actionText');
var actionColor = $(this).attr('data-actionColor');
Snackbar.show({
text: text,
//actionText: actionText,
actionTextColor: actionColor,
backgroundColor: bg,
width: 'auto',
pos: pos
});
});
}
var appNavigateShare = function(){
const dzShareData = {
title: 'W3Cart',
text: 'W3Cart - Ecommerce Mobile App Template ( Bootstrap + PWA )',
url: document.location.protocol + "//" + document.location.host
}
jQuery('#shareBtn').on('click', function() {
if(navigator.share)
{
navigator.share(dzShareData);
}
});
}
var handlelangPicker = function(){
if(jQuery('#offcanvasLang').length > 0)
{
const bsOffcanvas = new bootstrap.Offcanvas('#offcanvasLang')
$('.confirm-lang li').on('click', function () {
var x = $(this).attr("data-lang")
$('.select-lang').text(x)
bsOffcanvas.hide();
});
}
}
var handleColorFilter = function(){
var colorsInput = document.querySelectorAll(".color-filter .form-check-input");
colorsInput.forEach(colorChange)
function colorChange(item, index, arr) {
var color = $(item).val();
var element = $(item).closest('.form-check').find('span');
element.css({backgroundColor : color});
}
}
var onePageLayout = function() {
'use strict';
var headerHeight = parseInt($('.onepage').css('height'), 10);
$(".scroll").unbind().on('click',function(event)
{
event.preventDefault();
if (this.hash !== "") {
var hash = this.hash;
var seactionPosition = $(hash).offset().top;
var headerHeight = parseInt($('.onepage').css('height'), 10);
$('body').scrollspy({target: ".header, .scroll-bx", offset: headerHeight+2});
var scrollTopPosition = seactionPosition - (headerHeight + 10);
$('html, body').animate({
scrollTop: scrollTopPosition
}, 800, function(){
});
}
});
$('body').scrollspy({target: ".header, .scroll-bx", offset: headerHeight + 2});
}
/* Function ============ */
return {
init:function(){
handleMenubar();
handlelangPicker();
handleThemeVersion2();
handleToggleButton();
handleLikeButton();
handleShowPass();
handleIsFixed();
handleChatBox();
handleLightgallery();
handleCustomFileInput();
handleMessageHandle();
handleGoBack();
// handlePWAModal();
handleSearch();
handleRemoveClass();
handleTabSlide();
handleOTP();
handleTagRemove();
handleTouchSpin();
handleColorFilter();
onePageLayout();
},
load:function(){
handlePreloader();
handleSelectpicker();
// appNavigateShare();
},
resize:function(){
screenWidth = $( window ).width();
handleTabSlide();
},
}
}();
/* Document.ready Start */
jQuery(document).ready(function() {
'use strict';
w3cart.init();
$('[data-bs-toggle="popover"]').popover();
$('.theme-dark .custom-switch input').prop('checked', true);
});
/* Document.ready END */
/* Window Load START */
jQuery(window).on('load',function () {
'use strict';
w3cart.load();
setTimeout(function(){
jQuery('#splashscreen').addClass('active');
jQuery('#splashscreen').fadeOut(1500);
}, 1500);
$('.theme-dark .custom-switch input').prop('checked', true).addClass('active');
});
/* Window Load END */
/* Window Resize START */
jQuery(window).on('resize',function () {
'use strict';
w3cart.resize();
});
/* Window Resize END */