?AlkantarClanX12
| Current Path : /home/rankinh/saintgilleslesbains/wp-content/themes/pressville/assets/js/ |
| Current File : /home/rankinh/saintgilleslesbains/wp-content/themes/pressville/assets/js/pressville-scripts.js |
/**
* Table of contents
*
* 1. General
* 2. Components & shortcodes
* 3. Header
* 4. Core
* 5. Other
* 6. Shortcodes
* 7. Plugins
*/
(function ($) {
"use strict";
$(document).ready(function () {
/* -----------------------------------------------------------------------------
1. GENERAL
----------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------
IMPROVE ACCESSIBILITY
-------------------------------------------------------------------------- */
if ($('body').hasClass('lsvr-accessibility')) {
// User is using mouse
$(document).on('mousedown', function () {
$('body').addClass('lsvr-using-mouse');
$('body').removeClass('lsvr-using-keyboard');
});
// User is using keyboard
$(document).on('keyup', function (e) {
if (e.key === "Tab") {
$('body').addClass('lsvr-using-keyboard');
$('body').removeClass('lsvr-using-mouse');
}
});
}
/* -----------------------------------------------------------------------------
2. COMPONENTS & SHORTCODES
----------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------
LEAFLET MAP
-------------------------------------------------------------------------- */
if ($.fn.lsvrPressvilleMapLeaflet && 'object' === typeof L) {
$('.c-map--leaflet').each(function () {
$(this).lsvrPressvilleMapLeaflet();
});
}
/* -------------------------------------------------------------------------
MAP
-------------------------------------------------------------------------- */
if ($.fn.lsvrPressvilleMapGmaps) {
$('.c-map--gmaps').each(function () {
$(this).lsvrPressvilleMapGmaps();
});
}
/* -------------------------------------------------------------------------
LSVR PRESSVILLE POST GRID SHORTCODE
-------------------------------------------------------------------------- */
if ($.fn.lsvrPressvillePostGridShortcode) {
$('.lsvr-pressville-post-grid--has-slider').each(function () {
$(this).addClass('lsvr-pressville-post-grid--init');
$(this).lsvrPressvillePostGridShortcode();
});
}
/* -------------------------------------------------------------------------
LSVR PRESSVILLE SITEMAP SHORTCODE
-------------------------------------------------------------------------- */
if ($.fn.lsvrPressvilleSitemapShortcode) {
$('.lsvr-pressville-sitemap').each(function () {
$(this).addClass('lsvr-pressville-sitemap--init');
$(this).lsvrPressvilleSitemapShortcode();
});
}
/* -----------------------------------------------------------------------------
3. HEADER
----------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------
BACKGROUND SLIDESHOW
-------------------------------------------------------------------------- */
$('.header-titlebar__background--slideshow, .header-titlebar__background--slideshow-home').each(function () {
var $this = $(this),
$images = $this.find('.header-titlebar__background-image'),
slideshowSpeed = $this.data('slideshow-speed') ? parseInt($this.data('slideshow-speed')) * 1000 : 10,
animationSpeed = 2000;
// Continue if there are at least two images
if ($images.length > 1) {
// Set default active image
$images.filter('.header-titlebar__background-image--default').addClass('header-titlebar__background-image--active');
var $active = $images.filter('.header-titlebar__background-image--active'),
$next;
// Change image to next one
var changeImage = function () {
// Determine next image
if ($active.next().length > 0) {
$next = $active.next();
} else {
$next = $images.first();
}
// Hide active
$active.fadeOut(animationSpeed, function () {
$(this).removeClass('header-titlebar__background-image--active');
});
// Show next
$next.fadeIn(animationSpeed, function () {
$(this).addClass('header-titlebar__background-image--active');
$active = $(this);
});
// Repeat
setTimeout(function () {
changeImage();
}, slideshowSpeed);
};
// Init
if ($.fn.lsvrPressvilleGetMediaQueryBreakpoint() > 1199) {
setTimeout(function () {
changeImage();
}, slideshowSpeed);
}
}
});
/* -------------------------------------------------------------------------
STICKY NAVBAR
-------------------------------------------------------------------------- */
$('.header-navbar--is-sticky').each(function () {
if ($.fn.lsvrPressvilleGetMediaQueryBreakpoint() > 991) {
var $navbar = $(this),
$titlebar = $('.header-titlebar'),
navbarHeight = $navbar.outerHeight(),
titlebarHeight = $titlebar.outerHeight();
// Insert navbar placeholder element
$navbar.after('<div class="header-navbar__placeholder"></div>');
var $placeholder = $('.header-navbar__placeholder');
$placeholder.css('height', navbarHeight);
$(window).scroll(function () {
if ($(window).scrollTop() > titlebarHeight) {
$placeholder.addClass('header-navbar__placeholder--active');
$navbar.addClass('header-navbar--sticky');
} else {
$placeholder.removeClass('header-navbar__placeholder--active');
$navbar.removeClass('header-navbar--sticky');
}
});
}
});
/* -------------------------------------------------------------------------
PRIMARY MENU
------------------------------------------------------------------------- */
$('.header-menu-primary').each(function () {
var $this = $(this),
expandPopupLabel = $this.data('label-expand-popup'),
collapsePopupLabel = $this.data('label-collapse-popup');
// Hide desktop all submenus function
function resetMenu() {
$this.find('.header-menu-primary__item').removeClass('header-menu-primary__item--hover header-menu-primary__item--active');
$this.find('.header-menu-primary__item-link').attr('aria-expanded', false);
$this.find('.header-menu-primary__submenu').removeAttr('style').attr('aria-expanded', false);
$this.find('.header-menu-primary__submenu-toggle').removeClass('header-menu-primary__submenu-toggle--active').attr('title', expandPopupLabel).attr('aria-expanded', false);
}
// Init mobile
function initMobile() {
$this.find('.header-menu-primary__item-link').each(function () {
if ($(this).attr('aria-controls')) {
$(this).attr('data-aria-controls', $(this).attr('aria-controls')).removeAttr('aria-controls').removeAttr('aria-owns').removeAttr('aria-haspopup').removeAttr('aria-expanded');
}
});
}
// Init desktop
function initDesktop() {
$this.find('.header-menu-primary__item-link').each(function () {
if ($(this).attr('data-aria-controls')) {
$(this).attr('aria-controls', $(this).attr('data-aria-controls')).attr('aria-owns', $(this).attr('data-aria-controls')).attr('aria-haspopup', true).attr('aria-expanded', false);
}
});
}
// Init mobile version on refresh
if ($.fn.lsvrPressvilleGetMediaQueryBreakpoint() < 992) {
initMobile();
}
// Reset menu when click on link without submenu
$this.find('.header-menu-primary__item-link').each(function () {
$(this).on('click', function () {
if ($(this).parent().find('> .header-menu-primary__submenu').length < 1) {
resetMenu();
}
});
});
// Parse submenus
$this.find('.header-menu-primary__submenu').each(function () {
var $submenu = $(this),
$parent = $submenu.parent(),
$toggle = $parent.find('> .header-menu-primary__submenu-toggle'),
$link = $parent.find('> .header-menu-primary__item-link'),
type = $link.closest('.header-menu-primary__item--megamenu').length > 0 ? 'megamenu' : 'dropdown';
// Show desktop submenu function
function desktopShowSubmenu() {
$submenu.show();
$submenu.attr('aria-expanded', true);
$parent.addClass('header-menu-primary__item--hover');
$link.attr('aria-expanded', true);
}
// Hide desktop submenu function
function desktopHideSubmenu() {
$submenu.hide();
$submenu.attr('aria-expanded', false);
$parent.removeClass('header-menu-primary__item--hover');
$link.attr('aria-expanded', false);
}
// Show mobile submenu function
function mobileShowSubmenu() {
$submenu.slideDown(150);
$submenu.attr('aria-expanded', true);
$parent.addClass('header-menu-primary__item--active');
$toggle.attr('title', collapsePopupLabel).attr('aria-expanded', true);
}
// Hide mobile submenu function
function mobileHideSubmenu() {
$submenu.slideUp(150);
$submenu.attr('aria-expanded', false);
$parent.removeClass('header-menu-primary__item--active');
$toggle.attr('title', expandPopupLabel).attr('aria-expanded', false);
}
// Desktop interaction
if (('dropdown' === type &&
($submenu.hasClass('header-menu-primary__submenu--level-0') || $submenu.hasClass('header-menu-primary__submenu--level-1'))) ||
('megamenu' === type && $submenu.hasClass('header-menu-primary__submenu--level-0'))) {
// Desktop mouseover and focus action
$parent.on('mouseover focus', function () {
if ($.fn.lsvrPressvilleGetMediaQueryBreakpoint() > 991) {
desktopShowSubmenu();
}
});
// Desktop mouseleave and blur action
$parent.on('mouseleave blur', function () {
if ($.fn.lsvrPressvilleGetMediaQueryBreakpoint() > 991) {
desktopHideSubmenu();
}
});
// Desktop click or key enter
$link.on('click', function () {
if ($.fn.lsvrPressvilleGetMediaQueryBreakpoint() > 991 && !$parent.hasClass('header-menu-primary__item--hover')) {
// Hide opened submenus
$parent.siblings('.header-menu-primary__item.header-menu-primary__item--hover').each(function () {
$(this).removeClass('header-menu-primary__item--hover');
$(this).find('> .header-menu-primary__submenu').hide();
$(this).find('> .header-menu-primary__item-link').attr('aria-expanded', false);
$(this).find('> .header-menu-primary__submenu').attr('aria-expanded', false);
});
// Show submenu
desktopShowSubmenu();
// Hide on click outside
$('html').on('click.lsvrPressvilleHeaderMenuPrimaryCloseSubmenuOnClickOutside touchstart.lsvrPressvilleHeaderMenuPrimaryCloseSubmenuOnClickOutside', function (e) {
desktopHideSubmenu();
$('html').unbind('click.lsvrPressvilleHeaderMenuPrimaryCloseSubmenuOnClickOutside touchstart.lsvrPressvilleHeaderMenuPrimaryCloseSubmenuOnClickOutside');
});
// Disable link
$parent.on('click touchstart', function (e) {
e.stopPropagation();
});
return false;
} else {
resetMenu();
}
});
}
// Mobile interactions
$toggle.on('click', function () {
$toggle.toggleClass('header-menu-primary__submenu-toggle--active');
if ($toggle.hasClass('header-menu-primary__submenu-toggle--active')) {
mobileShowSubmenu();
} else {
mobileHideSubmenu();
}
});
});
// Reset menu on ESC key
$(document).on('keyup.lsvrPressvilleHeaderMenuPrimaryCloseSubmenuOnEscKey', function (e) {
if (e.key === "Escape") {
// Close active submenu
if ($('*:focus').closest('.header-menu-primary__item--hover, .header-menu-primary__item--active').length > 0) {
$('*:focus').closest('.header-menu-primary__item--hover, .header-menu-primary__item--active').each(function () {
$(this).removeClass('header-menu-primary__item--hover header-menu-primary__item--active');
$(this).find('> .header-menu-primary__submenu').hide();
$(this).find('> .header-menu-primary__submenu').attr('aria-expanded', false);
$(this).find('> .header-menu-primary__submenu-toggle').removeClass('header-menu-primary__submenu-toggle--active').attr('title', expandPopupLabel).attr('aria-expanded', false);
if ($.fn.lsvrPressvilleGetMediaQueryBreakpoint() > 991) {
$(this).find('> .header-menu-primary__item-link').attr('aria-expanded', false);
$(this).find('> .header-menu-primary__item-link').focus();
} else {
$(this).find('> .header-menu-primary__submenu-toggle').focus();
}
});
}
// Otherwise close all submenus
else {
$('.header-menu-primary__item--hover, .header-menu-primary__item--active').each(function () {
$(this).removeClass('header-menu-primary__item--hover header-menu-primary__item--active');
$(this).find('> .header-menu-primary__submenu').hide();
$(this).find('> .header-menu-primary__submenu').attr('aria-expanded', false);
$(this).find('> .header-menu-primary__submenu-toggle').removeClass('header-menu-primary__submenu-toggle--active').attr('title', expandPopupLabel).attr('aria-expanded', false);
if ($.fn.lsvrPressvilleGetMediaQueryBreakpoint() > 991) {
$(this).find('> .header-menu-primary__item-link').attr('aria-expanded', false);
}
});
}
}
});
// Reset on screen transition
$(document).on('lsvrPressvilleScreenTransition', function () {
resetMenu();
if ($.fn.lsvrPressvilleGetMediaQueryBreakpoint() > 991) {
initDesktop();
} else {
initMobile();
}
});
});
/* -------------------------------------------------------------------------
HEADER SEARCH
------------------------------------------------------------------------- */
$('.header-search').each(function () {
var $popup = $(this),
$form = $popup.find('.header-search__form'),
$input = $form.find('.header-search__input'),
$filter = $form.find('.header-search__filter'),
$toggle = $('.header-search__toggle'),
$closeButton = $('.header-search__form-close-button'),
expandPopupLabel = $toggle.data('label-expand-popup'),
collapsePopupLabel = $toggle.data('label-collapse-popup');
// Close form function
function closeSearch() {
$popup.slideUp(100);
$toggle.removeClass('header-search__toggle--active');
$toggle.attr('title', expandPopupLabel);
$toggle.attr('aria-expanded', false);
$popup.attr('aria-expanded', false);
}
// Refresh filter function
function refreshSearchFilter(checkbox) {
if (true === checkbox.prop('checked') || 'checked' === checkbox.prop('checked')) {
checkbox.parent().addClass('header-search__filter-label--active');
// Filter all
if (checkbox.attr('id').indexOf('header-search-filter-type-any') >= 0) {
$filter.find('input:not( [id^=header-search-filter-type-any] )').prop('checked', false).change();
}
// Filter others
else {
$filter.find('input[id^=header-search-filter-type-any]').prop('checked', false).change();
}
} else {
checkbox.parent().removeClass('header-search__filter-label--active');
// Filter All if there is no other filter active
if ($filter.find('input:checked').length < 1) {
$filter.find('input[id^=header-search-filter-type-any]').prop('checked', true).change();
}
}
}
// Toggle search
$toggle.on('click', function () {
$toggle.toggleClass('header-search__toggle--active');
$popup.slideToggle(100);
if ($toggle.hasClass('header-search__toggle--active')) {
$input.focus();
$toggle.attr('title', collapsePopupLabel).attr('aria-expanded', true);
$popup.attr('aria-expanded', true);
} else {
$toggle.attr('title', expandPopupLabel).attr('aria-expanded', false);
$popup.attr('aria-expanded', false);
}
});
// Close form on close button click
$closeButton.on('click', function () {
closeSearch();
});
// Search filter
$filter.find('input').each(function () {
refreshSearchFilter($(this));
$(this).on('change', function () {
refreshSearchFilter($(this));
});
});
// Close on click outside
$(document).on('click.lsvrPressvilleHeaderSearchClosePopupOnClickOutside', function (e) {
if (!$(e.target).closest('.header-search__wrapper').length && $.fn.lsvrPressvilleGetMediaQueryBreakpoint() > 991) {
closeSearch();
}
});
// Close on ESC key
$(document).on('keyup.lsvrPressvilleHeaderSearchClosePopupOnEscKey', function (e) {
if (e.key === "Escape" && $.fn.lsvrPressvilleGetMediaQueryBreakpoint() > 991) {
closeSearch();
}
});
// Remove inline styles on screen transition
$(document).on('lsvrPressvilleScreenTransition', function () {
$popup.removeAttr('style').attr('aria-expanded', false);
$toggle.removeClass('header-search__toggle--active').attr('title', expandPopupLabel).attr('aria-expanded', false);
});
});
/* -------------------------------------------------------------------------
HEADER LANGUAGES MOBILE
------------------------------------------------------------------------- */
$('.header-languages-mobile').each(function () {
var $this = $(this),
$popup = $this.find('.header-languages-mobile__inner'),
$toggle = $this.find('.header-languages-mobile__toggle'),
expandPopupLabel = $toggle.data('label-expand-popup'),
collapsePopupLabel = $toggle.data('label-collapse-popup');
$toggle.on('click', function () {
$(this).toggleClass('header-languages-mobile__toggle--active');
$popup.slideToggle(100);
if ($toggle.hasClass('header-languages-mobile__toggle--active')) {
$toggle.attr('title', collapsePopupLabel).attr('aria-expanded', true);
$popup.attr('aria-expanded', true);
} else {
$toggle.attr('title', expandPopupLabel).attr('aria-expanded', false);
$popup.attr('aria-expanded', false);
}
});
// Remove inline styles on screen transition
$(document).on('lsvrPressvilleScreenTransition', function () {
$toggle.removeClass('header-languages-mobile__toggle--active').attr('title', expandPopupLabel).attr('aria-expanded', false);
$popup.removeAttr('style').attr('aria-expanded', false);
});
});
/* -------------------------------------------------------------------------
HEADER MOBILE TOGGLE
------------------------------------------------------------------------- */
$('.header-mobile-toggle').each(function () {
var $toggle = $(this),
$popup = $('.header__navgroup'),
expandPopupLabel = $toggle.data('label-expand-popup'),
collapsePopupLabel = $toggle.data('label-collapse-popup');
$toggle.on('click', function () {
$toggle.toggleClass('header-mobile-toggle--active');
$popup.slideToggle(100);
if ($toggle.hasClass('header-mobile-toggle--active')) {
$toggle.attr('title', collapsePopupLabel).attr('aria-expanded', true);
$popup.attr('aria-expanded', true);
} else {
$toggle.attr('title', expandPopupLabel).attr('aria-expanded', false);
$popup.attr('aria-expanded', false);
}
});
// Set navgroup as popup
if ($.fn.lsvrPressvilleGetMediaQueryBreakpoint() < 992) {
$popup.attr('aria-labelledby', $popup.data('aria-labelledby')).attr('aria-expanded', false);
}
// Reset states on screen transition
$(document).on('lsvrPressvilleScreenTransition', function () {
$toggle.removeClass('header-mobile-toggle--active');
$popup.removeAttr('style aria-labelledby aria-expanded');
// Set navgroup as popup
if ($.fn.lsvrPressvilleGetMediaQueryBreakpoint() < 992) {
$popup.attr('aria-labelledby', $popup.data('aria-labelledby')).attr('aria-expanded', false);
}
});
});
/* -----------------------------------------------------------------------------
4. CORE
----------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------
POST COMPONENTS
------------------------------------------------------------------------- */
// Post filter
$('.post-archive-filter').each(function () {
var $this = $(this),
$form = $this.find('.post-archive-filter__form'),
$resetButton = $this.find('.post-archive-filter__reset-button');
// Datepicker
if ($.fn.datepicker) {
$this.find('.post-archive-filter__input--datepicker').each(function () {
var $datepicker = $(this);
$datepicker.datepicker({
dateFormat: 'yy-mm-dd',
beforeShow: function () {
$('#ui-datepicker-div').addClass('lsvr-datepicker');
},
});
$datepicker.parent().on('click', function () {
$datepicker.datepicker('show');
});
});
}
// Reset
$resetButton.on('click', function () {
$this.find('.post-archive-filter__input--datepicker').each(function () {
$(this).val('');
});
$form.submit();
});
});
/* -------------------------------------------------------------------------
DIRECTORY
------------------------------------------------------------------------- */
// Listing masonry
if ($.fn.masonry && $.fn.imagesLoaded) {
$('.lsvr_listing-post-archive .lsvr-grid--masonry').each(function () {
var $this = $(this),
isRTL = $('html').attr('dir') && 'rtl' === $('html').attr('dir') ? true : false;
// Wait for images to load
$this.imagesLoaded(function () {
$this.masonry({
isRTL: isRTL
});
});
});
}
// Listing gallery carousel
if ($.fn.slick) {
$('.lsvr_listing-post-gallery').each(function () {
var $this = $(this),
$list = $this.find('.lsvr_listing-post-gallery__list'),
isRTL = $('html').attr('dir') && 'rtl' === $('html').attr('dir') ? true : false;
$list.on('init', function () {
$this.removeClass('lsvr_listing-post-gallery--loading');
// Init lightbox
if ($.fn.magnificPopup) {
$this.find('.lsvr_listing-post-gallery__link').magnificPopup({
type: 'image',
removalDelay: 300,
mainClass: 'mfp-fade',
gallery: {
enabled: true,
tCounter: '' // Disable images count, because carousel contains image duplicates to create seamless loop
}
});
}
});
// Init Slick
$list.slick({
infinite: false,
rtl: isRTL,
prevArrow: false,
nextArrow: false,
slidesToShow: 5,
slidesToScroll: 3,
responsive: [{
breakpoint: 2000,
settings: {
slidesToShow: 4,
slidesToScroll: 2,
}
},
{
breakpoint: 1600,
settings: {
slidesToShow: 3,
slidesToScroll: 1
}
},
{
breakpoint: 1000,
settings: {
slidesToShow: 2,
slidesToScroll: 1
}
},
{
breakpoint: 500,
settings: {
slidesToShow: 1,
slidesToScroll: 1
}
}
],
});
// Prev
$('.lsvr_listing-post-gallery__button--prev').on('click', function () {
$list.slick('slickPrev');
});
// Next
$('.lsvr_listing-post-gallery__button--next').on('click', function () {
$list.slick('slickNext');
});
});
}
/* -------------------------------------------------------------------------
EVENTS
------------------------------------------------------------------------- */
// Events masonry
if ($.fn.masonry && $.fn.imagesLoaded) {
$('.lsvr_event-post-archive .lsvr-grid--masonry').each(function () {
var $this = $(this),
isRTL = $('html').attr('dir') && 'rtl' === $('html').attr('dir') ? true : false;
// Wait for images to load
$this.imagesLoaded(function () {
$this.masonry({
isRTL: isRTL
});
});
});
}
// Upcoming dates
$('.lsvr_event-post-single .post__dates').each(function () {
var $this = $(this),
$title = $this.find('.post__dates-title'),
$listWrapper = $this.find('.post__dates-list-wrapper');
$title.on('click', function () {
$title.toggleClass('post__dates-title--active');
$listWrapper.slideToggle(150);
});
});
/* -------------------------------------------------------------------------
GALLERIES
------------------------------------------------------------------------- */
// Gallery masonry
if ($.fn.masonry && $.fn.imagesLoaded) {
$('.lsvr_gallery-post-archive .lsvr-grid--masonry, .lsvr_gallery-post-single .post__image-list').each(function () {
var $this = $(this),
isRTL = $('html').attr('dir') && 'rtl' === $('html').attr('dir') ? true : false;
// Wait for images to load
$this.imagesLoaded(function () {
$this.masonry({
isRTL: isRTL
});
});
});
}
/* -------------------------------------------------------------------------
DOCUMENTS
------------------------------------------------------------------------- */
// Categorized attachments
$('.lsvr_document-post-archive--categorized-attachments .post-tree').each(function () {
var expandSubmenuLabel = $(this).data('label-expand-submenu'),
collapseSubmenuLabel = $(this).data('label-collapse-submenu');
$(this).find('.post-tree__item-toggle').each(function () {
var $toggle = $(this),
$parent = $toggle.parent(),
$submenu = $parent.find('> .post-tree__children');
$toggle.on('click', function () {
$toggle.toggleClass('post-tree__item-toggle--active');
$parent.toggleClass('post-tree__item--active');
$submenu.slideToggle(200);
if ($toggle.hasClass('post-tree__item-toggle--active')) {
$toggle.attr('aria-label', collapseSubmenuLabel);
$toggle.attr('aria-expanded', true);
$submenu.attr('aria-expanded', true);
} else {
$toggle.attr('aria-label', expandSubmenuLabel);
$toggle.attr('aria-expanded', false);
$submenu.attr('aria-expanded', false);
}
});
});
});
// Close mobile submenu on ESC key
if ($('.lsvr_document-post-archive--categorized-attachments .post-tree').length > 0) {
var expandSubmenuLabel = $('.lsvr_document-post-archive--categorized-attachments .post-tree').data('label-expand-submenu');
$(document).on('keyup.lsvrPressvilleDocumentArchiveCategorizedAttachmentsCloseSubmenuOnEscKey', function (e) {
if (e.key === "Escape") {
// Find focused link parent
if ($('*:focus').closest('.post-tree__item--active').length > 0) {
$('*:focus').closest('.post-tree__item--active').each(function () {
// Close active submenu
$(this).removeClass('post-tree__item--active');
$(this).find('> .post-tree__children').hide();
$(this).find('> .post-tree__item-toggle').removeClass('post-tree__item-toggle--active');
$(this).find('> .post-tree__item-toggle').attr('aria-label', expandSubmenuLabel);
$(this).find('> .post-tree__item-toggle').attr('aria-expanded', false);
$(this).find('> .post-tree__children').attr('aria-expanded', false);
// Change focus
$(this).find('> .post-tree__item-toggle').focus();
});
}
// Otherwise hide all submenus
else {
$('.post-tree__item').each(function () {
$(this).removeClass('header-post-tree__item--active');
$(this).find('> .post-tree__children').hide();
$(this).find('> .post-tree__item-toggle').removeClass('post-tree__item-toggle--active');
$(this).find('> .post-tree__item-toggle').attr('aria-label', expandSubmenuLabel);
$(this).find('> .post-tree__item-toggle').attr('aria-expanded', false);
$(this).find('> .post-tree__children').attr('aria-expanded', false);
});
}
}
});
}
/* -----------------------------------------------------------------------------
5. OTHER
----------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------
BACK TO TOP
------------------------------------------------------------------------- */
$('.back-to-top').each(function () {
var $this = $(this),
$link = $this.find('.back-to-top__link'),
threshold = $this.attr('data-threshold') ? parseInt($this.data('threshold')) : 100;
// Show link after scrolled down
if (threshold > 0 && (
$this.hasClass('back-to-top--type-enable') ||
($this.hasClass('back-to-top--type-desktop') && $.fn.lsvrPressvilleGetMediaQueryBreakpoint() > 991) ||
($this.hasClass('back-to-top--type-mobile') && $.fn.lsvrPressvilleGetMediaQueryBreakpoint() < 992))) {
$(window).scroll(function () {
if ($(window).scrollTop() > threshold && $this.is(':hidden')) {
$this.fadeIn(300);
} else if ($(window).scrollTop() <= threshold && $this.is(':visible')) {
$this.fadeOut(300);
}
});
}
// Click action
$link.on('click', function () {
$('html, body').animate({
scrollTop: 0
}, 100);
return false;
});
});
/* -------------------------------------------------------------------------
MAGNIFIC POPUP
------------------------------------------------------------------------- */
if ($.fn.magnificPopup) {
// Lightbox config
if ('undefined' !== typeof lsvr_pressville_js_labels && lsvr_pressville_js_labels.hasOwnProperty('magnific_popup')) {
var js_strings = lsvr_pressville_js_labels.magnific_popup;
$.extend(true, $.magnificPopup.defaults, {
tClose: js_strings.mp_tClose,
tLoading: js_strings.mp_tLoading,
gallery: {
tPrev: js_strings.mp_tPrev,
tNext: js_strings.mp_tNext,
tCounter: '%curr% / %total%'
},
image: {
tError: js_strings.mp_image_tError,
},
ajax: {
tError: js_strings.mp_ajax_tError,
}
});
}
// Init lightbox
$('.lsvr-open-in-lightbox, body:not( .elementor-page ) .gallery .gallery-item a, .wp-block-gallery .blocks-gallery-item a').magnificPopup({
type: 'image',
removalDelay: 300,
mainClass: 'mfp-fade',
gallery: {
enabled: true
}
});
}
});
})(jQuery);
(function ($) {
"use strict";
/* -----------------------------------------------------------------------------
6. SHORTCODES
----------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------
PRESSVILLE POST GRID
-------------------------------------------------------------------------- */
if (!$.fn.lsvrPressvillePostGridShortcode) {
$.fn.lsvrPressvillePostGridShortcode = function () {
if ($.fn.slick) {
var $this = $(this),
$slider = $this.find('.lsvr-pressville-post-grid__list'),
$wrapper = $this.find('.lsvr-pressville-post-grid__list-wrapper'),
isRTL = $('html').attr('dir') && 'rtl' === $('html').attr('dir') ? true : false,
columnsCount = $slider.data('columns-count'),
columnsCountLg = columnsCount > 3 ? 3 : columnsCount,
columnsCountMd = columnsCount > 2 ? 2 : columnsCount;
// Remove loading
$slider.on('init', function () {
$slider.removeClass('lsvr-pressville-post-grid__list--loading');
});
// Init Slick
$slider.slick({
infinite: true,
rtl: isRTL,
prevArrow: false,
nextArrow: false,
slidesToShow: columnsCount,
slidesToScroll: columnsCount,
responsive: [{
breakpoint: 1199,
settings: {
slidesToShow: columnsCountLg,
slidesToScroll: columnsCountLg
}
},
{
breakpoint: 991,
settings: {
slidesToShow: columnsCountMd,
slidesToScroll: columnsCountMd
}
},
{
breakpoint: 767,
settings: {
slidesToShow: 1,
slidesToScroll: 1
}
}
],
});
// Prev
$wrapper.find('.lsvr-pressville-post-grid__list-button--prev').on('click', function () {
$slider.slick('slickPrev');
});
// Next
$wrapper.find('.lsvr-pressville-post-grid__list-button--next').on('click', function () {
$slider.slick('slickNext');
});
}
};
}
/* -------------------------------------------------------------------------
PRESSVILLE SITEMAP
-------------------------------------------------------------------------- */
if (!$.fn.lsvrPressvilleSitemapShortcode) {
$.fn.lsvrPressvilleSitemapShortcode = function () {
$(this).find('.lsvr-pressville-sitemap__nav').each(function () {
var expandPopupLabel = $(this).data('label-expand-popup'),
collapsePopupLabel = $(this).data('label-collapse-popup');
$(this).find('.lsvr-pressville-sitemap__submenu--level-1').each(function () {
var $this = $(this),
$parent = $this.parent(),
$toggle = $parent.find('.lsvr-pressville-sitemap__toggle');
$toggle.on('click', function () {
$this.slideToggle(200);
$toggle.toggleClass('lsvr-pressville-sitemap__toggle--active');
// Submenu expanded
if ($toggle.hasClass('lsvr-pressville-sitemap__toggle--active')) {
$toggle.attr('title', collapsePopupLabel).attr('aria-expanded', true);
$this.attr('aria-expanded', true);
}
// Submenu collapsed
else {
$toggle.attr('title', expandPopupLabel).attr('aria-expanded', false);
$this.attr('aria-expanded', false);
}
});
});
});
};
}
/* -----------------------------------------------------------------------------
7. PLUGINS
----------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------
MEDIA QUERY BREAKPOINT
------------------------------------------------------------------------- */
if (!$.fn.lsvrPressvilleGetMediaQueryBreakpoint) {
$.fn.lsvrPressvilleGetMediaQueryBreakpoint = function () {
if ($('#lsvr-media-query-breakpoint').length < 1) {
$('body').append('<span id="lsvr-media-query-breakpoint" style="display: none;"></span>');
}
var value = $('#lsvr-media-query-breakpoint').css('font-family');
if (typeof value !== 'undefined') {
value = value.replace("\"", "").replace("\"", "").replace("\'", "").replace("\'", "");
}
if (isNaN(value)) {
return $(window).width();
} else {
return parseInt(value);
}
};
}
var lsvrPressvilleMediaQueryBreakpoint;
if ($.fn.lsvrPressvilleGetMediaQueryBreakpoint) {
lsvrPressvilleMediaQueryBreakpoint = $.fn.lsvrPressvilleGetMediaQueryBreakpoint();
$(window).resize(function () {
if ($.fn.lsvrPressvilleGetMediaQueryBreakpoint() !== lsvrPressvilleMediaQueryBreakpoint) {
lsvrPressvilleMediaQueryBreakpoint = $.fn.lsvrPressvilleGetMediaQueryBreakpoint();
$.event.trigger({
type: 'lsvrPressvilleScreenTransition',
message: 'Screen transition completed.',
time: new Date()
});
}
});
} else {
lsvrPressvilleMediaQueryBreakpoint = $(document).width();
}
/* -------------------------------------------------------------------------
LEAFLET MAP
-------------------------------------------------------------------------- */
if (!$.fn.lsvrPressvilleMapLeaflet) {
$.fn.lsvrPressvilleMapLeaflet = function () {
// Prepare params
var $this = $(this).find('.c-map__canvas'),
mapProvider = $this.data('map-provider') ? $this.data('map-provider') : 'osm',
zoom = $this.data('zoom') ? $this.data('zoom') : 9,
enableMouseWheel = $this.data('mousewheel') && true === String($this.data('mousewheel')) ? true : false,
elementId = $this.attr('id'),
address = $this.data('address') ? $this.data('address') : false,
latLong = $this.data('latlong') ? $this.data('latlong') : false,
latitude = false,
longitude = false;
// Parse latitude and longitude
if (false !== latLong) {
var latLongArr = latLong.split(',');
if (latLongArr.length == 2) {
latitude = latLongArr[0].trim();
longitude = latLongArr[1].trim();
}
}
// Proceed only if latitude and longitude were obtained
if (false !== latitude && false !== longitude) {
// Prepare map options
var mapOptions = {
center: [latitude, longitude],
zoom: zoom,
scrollWheelZoom: enableMouseWheel,
};
// Init the map object
var map = L.map(elementId, mapOptions);
$this.data('map', map);
// Load tiles from Mapbox
if ('mapbox' === mapProvider) {
var apiKey = typeof lsvr_pressville_mapbox_api_key !== 'undefined' ? lsvr_pressville_mapbox_api_key : false;
if (false !== apiKey) {
L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token=' + apiKey, {
attribution: 'Map data © <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
id: 'mapbox/streets-v11',
tileSize: 512,
zoomOffset: -1,
accessToken: apiKey
}).addTo(map);
}
}
// Load tiles from Open Street Map
else if ('osm' === mapProvider) {
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>',
subdomains: ['a', 'b', 'c']
}).addTo(map);
}
// Marker HTML
var marker = L.divIcon({
iconAnchor: [15, 40],
className: 'c-map__marker-wrapper',
html: '<div class="c-map__marker"><div class="c-map__marker-inner"></div></div>'
});
// Add marker
L.marker([latitude, longitude], {
icon: marker
}).addTo(map);
// Remove loading
$this.removeClass('c-map__canvas--loading');
}
// Otherwise hide the map
else {
$this.hide();
}
};
}
/* -------------------------------------------------------------------------
GOOGLE MAP
-------------------------------------------------------------------------- */
if (!$.fn.lsvrPressvilleMapGmaps) {
$.fn.lsvrPressvilleMapGmaps = function () {
// Prepare params
var $this = $(this).find('.c-map__canvas'),
mapType = $this.data('maptype') ? $this.data('maptype') : 'terrain',
zoom = $this.data('zoom') ? $this.data('zoom') : 9,
enableMouseWheel = $this.data('mousewheel') && true === String($this.data('mousewheel')) ? true : false,
elementId = $this.attr('id'),
address = $this.data('address') ? $this.data('address') : false,
latLong = $this.data('latlong') ? $this.data('latlong') : false,
latitude = false,
longitude = false;
// Parse latitude and longitude
if (false !== latLong) {
var latLongArr = latLong.split(',');
if (latLongArr.length == 2) {
latitude = latLongArr[0].trim();
longitude = latLongArr[1].trim();
}
}
// Load Google Maps API
if ($.fn.lsvrPressvilleLoadGoogleMapsApi) {
$.fn.lsvrPressvilleLoadGoogleMapsApi();
}
// Set basic API settings
var apiSetup = function () {
// Get map type
switch (mapType) {
case 'roadmap':
mapType = google.maps.MapTypeId.ROADMAP;
break;
case 'satellite':
mapType = google.maps.MapTypeId.SATELLITE;
break;
case 'hybrid':
mapType = google.maps.MapTypeId.HYBRID;
break;
default:
mapType = google.maps.MapTypeId.TERRAIN;
}
// Prepare map options
var mapOptions = {
'zoom': zoom,
'mapTypeId': mapType,
'scrollwheel': enableMouseWheel,
};
// Set custom styles
if ('undefined' !== typeof lsvr_pressville_google_maps_style_json) {
mapOptions.styles = JSON.parse(lsvr_pressville_google_maps_style_json);
} else if ('undefined' !== typeof lsvr_pressville_google_maps_style) {
mapOptions.styles = lsvr_pressville_google_maps_style;
}
// Init the map object
var map = new google.maps.Map(document.getElementById(elementId),
mapOptions);
$this.data('map', map);
// If latitude and longitude were obtained, center the map
if (false !== latitude && false !== longitude) {
var location = new google.maps.LatLng(latitude, longitude);
map.setCenter(location);
var marker = new google.maps.Marker({
position: location,
map: map
});
$this.removeClass('c-map__canvas--loading');
}
// Otherwise hide the map
else {
$this.hide();
}
};
// Check if API is already loaded, if not, wait for trigger
if ('object' === typeof google && 'object' === typeof google.maps) {
apiSetup();
} else {
$(document).on('lsvrPressvilleGoogleMapsApiLoaded', function () {
apiSetup();
});
}
};
}
/* -------------------------------------------------------------------------
LOAD GOOGLE MAPS API
-------------------------------------------------------------------------- */
if (!$.fn.lsvrPressvilleLoadGoogleMapsApi) {
$.fn.lsvrPressvilleLoadGoogleMapsApi = function () {
// Check if Google Maps API isn't already loaded
if (!$('body').hasClass('lsvr-google-maps-api-loaded')) {
// Check if Google Maps API object doesn't already exists
if ('object' === typeof google && 'object' === typeof google.maps) {
$.fn.lsvrPressvilleGoogleMapsApiLoaded();
}
// If there is not existing instance of Google Maps API, let's create it
else if (!$('body').hasClass('lsvr-google-maps-api-being-loaded')) {
$('body').addClass('lsvr-google-maps-api-being-loaded');
var script = document.createElement('script'),
apiKey = typeof lsvr_pressville_google_api_key !== 'undefined' ? lsvr_pressville_google_api_key : false,
language = $('html').attr('lang') ? $('html').attr('lang') : 'en';
// Parse language
language = language.indexOf('-') > 0 ? language.substring(0, language.indexOf('-')) : language;
// Append the script
if (apiKey !== false) {
script.type = 'text/javascript';
script.src = 'https://maps.googleapis.com/maps/api/js?language=' + encodeURIComponent(language) + '&key=' + encodeURIComponent(apiKey) + '&callback=jQuery.fn.lsvrPressvilleGoogleMapsApiLoaded';
document.body.appendChild(script);
}
}
}
};
}
// Trigger event
if (!$.fn.lsvrPressvilleGoogleMapsApiLoaded) {
$.fn.lsvrPressvilleGoogleMapsApiLoaded = function () {
// Make sure that Google Maps API object does exist
if ('object' === typeof google && 'object' === typeof google.maps) {
// Trigger the event
$.event.trigger({
type: 'lsvrPressvilleGoogleMapsApiLoaded',
message: 'Google Maps API is ready.',
time: new Date()
});
// Add class to BODY element
$('body').removeClass('lsvr-google-maps-api-being-loaded');
$('body').addClass('lsvr-google-maps-api-loaded');
}
};
}
})(jQuery);