667 lines
19 KiB
JavaScript
667 lines
19 KiB
JavaScript
/*
|
||
/*
|
||
==============================================================================================
|
||
--------------------------| |--------------------------
|
||
--------------------------| JS / Key4events 2020 |--------------------------
|
||
--------------------------| |--------------------------
|
||
==============================================================================================
|
||
*/
|
||
|
||
|
||
|
||
/* -------------------- Variables/fonctions globales -------------------- */
|
||
|
||
var leftMenu,
|
||
carousel, checkFlickity,
|
||
checkScrollable, checkExpandableH,
|
||
MenuERP,
|
||
infopanel,
|
||
StatsTiles,
|
||
ScrollNav,
|
||
StickyObserver,
|
||
windowRS,
|
||
createPopover,
|
||
popover,
|
||
createModal,
|
||
modal,
|
||
istouch = !$('html').is('.no-touchevents'),
|
||
userAgent = navigator.userAgent || navigator.vendor || window.opera,
|
||
isiOS = /iPad|iPhone|iPod/.test(userAgent) && !window.MSStream,
|
||
isiPhone = /iPhone/.test(userAgent) && !window.MSStream,
|
||
isSafari = !!navigator.userAgent.match(/Version\/[\d\.]+.*Safari/);
|
||
|
||
|
||
function extend(a, b) {
|
||
for(var key in b) {
|
||
if(b.hasOwnProperty(key)) {
|
||
a[key] = b[key];
|
||
}
|
||
}
|
||
return a;
|
||
}
|
||
|
||
|
||
|
||
$(document).ready(function() {
|
||
|
||
|
||
|
||
/* -------------------- Détection de Safari sur iPhone (gestion spécifique du menu bottom sticky) -------------------- */
|
||
|
||
if (isiPhone && isSafari) {
|
||
$('html').addClass('isiPhone');
|
||
originalVH = window.innerHeight;
|
||
$(window).on('resize', function () {
|
||
let isportrait = orientation => {
|
||
switch (orientation) {
|
||
case 90:
|
||
case -90:
|
||
return false;
|
||
break;
|
||
default:
|
||
return true;
|
||
break;
|
||
}
|
||
};
|
||
$('body').toggleClass('noiOSbottombar', (isportrait(window.orientation) && window.innerHeight != originalVH));
|
||
});
|
||
}
|
||
|
||
|
||
|
||
/* -------------------- Ouverture/fermeture des menus gauche/droite -------------------- */
|
||
|
||
$('header .profile a, a.close-profile').click(function(e) {
|
||
$('body').toggleClass('show-profile');
|
||
if ($('body').hasClass('show-profile')) $('aside.profile > div').scrollTop(0);
|
||
});
|
||
$('header a.menu-left-trigger, a.close-menu-left').click(function(e) {
|
||
$('body').toggleClass('show-menu-left');
|
||
if ($('body').hasClass('show-params-left')) $('body').removeClass('show-params-left');
|
||
if ($('body').hasClass('show-menu-left')) {
|
||
$('.menu-params, .menu-left > div').scrollTop(0);
|
||
} else if ($('#erp-menu').length > 0) MenuERP.reInit();
|
||
});
|
||
$('a.params, a.close-params-left').click(function(e) {
|
||
$('body').toggleClass('show-params-left');
|
||
});
|
||
|
||
$(document).keyup(function(e) {
|
||
if (e.keyCode == 27)
|
||
$('body')
|
||
.removeClass('show-profile')
|
||
.removeClass('show-menu-left')
|
||
.removeClass('show-params-left');
|
||
});
|
||
|
||
var checkLeftMenus = function (w) {
|
||
if (w < 768) {
|
||
if ($('body').is('.show-params-left:not(.show-menu-left)')) $('body').addClass('show-menu-left');
|
||
} else {
|
||
if ($('body').is('.show-params-left.show-menu-left')) $('body').removeClass('show-menu-left');
|
||
}
|
||
};
|
||
|
||
|
||
|
||
/* -------------------- Caroussels Flickity -------------------- */
|
||
|
||
Flickity.prototype._createResizeClass = function() {
|
||
this.element.classList.add('flickity-autoheight');
|
||
};
|
||
Flickity.createMethods.push('_createResizeClass');
|
||
|
||
var resize = Flickity.prototype.resize;
|
||
Flickity.prototype.resize = function() {
|
||
this.element.classList.remove('flickity-autoheight');
|
||
resize.call(this);
|
||
this.element.classList.add('flickity-autoheight');
|
||
};
|
||
|
||
if ($('.x-carousel').length > 0) {
|
||
var tapArea, startX, arrows;
|
||
tapArea = document.querySelectorAll('.isflickity');
|
||
startX = 0;
|
||
|
||
for (var item of tapArea) {
|
||
item.ontouchstart = function(e) {
|
||
startX = e.touches[0].clientX;
|
||
};
|
||
item.ontouchmove = function(e) {
|
||
if (Math.abs(e.touches[0].clientX - startX) > 25 && e.cancelable) {
|
||
e.preventDefault();
|
||
}
|
||
};
|
||
}
|
||
|
||
checkFlickity = function(obj) {
|
||
var container = $(obj[0].element).closest('.x-carousel'),
|
||
btns = $(obj[0].element).find('.flickity-prev-next-button'),
|
||
draggabledlimit = container.attr('flickity-draggableunder'),
|
||
flickity = container.find('.isflickity'),
|
||
enabledlimit = container.attr('flickity-disabledover');
|
||
container.addClass('flickity-ready');
|
||
if (obj[0].size.width < obj[0].slideableWidth) btns.show();
|
||
else btns.hide();
|
||
if (draggabledlimit && draggabledlimit <= window.innerWidth) {
|
||
obj[0].options.draggable = false;
|
||
obj[0].updateDraggable();
|
||
} else {
|
||
obj[0].options.draggable = '>1';
|
||
obj[0].updateDraggable();
|
||
}
|
||
if (enabledlimit && enabledlimit <= window.innerWidth) {
|
||
container.addClass('flickity-disabled');
|
||
if (flickity.data('flickity') && flickity.data('flickity').selectedIndex != 0)
|
||
flickity.flickity('select', 0);
|
||
}
|
||
else container.removeClass('flickity-disabled');
|
||
}
|
||
|
||
carousel =
|
||
$('.isflickity').flickity({
|
||
cellAlign: 'left',
|
||
contain: true,
|
||
pageDots: false,
|
||
groupCells: false,
|
||
resize: false,
|
||
arrowShape: {
|
||
x0: 10,
|
||
x1: 50, y1: 80,
|
||
x2: 60, y2: 80,
|
||
x3: 20
|
||
},
|
||
on: {
|
||
ready: function() {
|
||
if ($(this.element).parents('.x-carousel').hasClass('flickity-freescroll'))
|
||
$(this)[0].options.freeScroll = true;
|
||
checkFlickity($(this));
|
||
if ($(this.element).parents('.flickity-array').length > 0 && isiOS)
|
||
$('html').addClass('noadvancedSticky');
|
||
},
|
||
change: function() {
|
||
var expanded = $(this.element).find('.showall');
|
||
if (expanded.length > 0) {
|
||
$(this.element).find('.showall').removeClass('showall');
|
||
$(window).scrollTop($(this.element).offset().top - 100);
|
||
}
|
||
},
|
||
settle: function() {
|
||
if ($(this.element).parents('.flickity-array').length == 0 && $(this.element).parents('.flickity-freescroll').length == 0)
|
||
$(this.element).flickity('resize');
|
||
},
|
||
scroll: function() {
|
||
if ($(this.element).parents('.flickity-array').length > 0)
|
||
$('[data-toggle="popover"][aria-describedby]').each(function() {
|
||
$(this).popover('hide');
|
||
});
|
||
}
|
||
}
|
||
});
|
||
|
||
document.fonts.ready.then(function() {
|
||
$.each(carousel, function(id, obj) {
|
||
$(obj).flickity('resize');
|
||
if ($(obj).hasClass('nav') && $(obj).find('.active').length > 0)
|
||
$(obj).flickity('select', $(obj).find('.active').parent().index());
|
||
});
|
||
});
|
||
}
|
||
|
||
|
||
|
||
/* -------------------- Gestion de la propriété "overflow" du menu droite -------------------- */
|
||
|
||
$('aside.profile')
|
||
.bind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function() {
|
||
if ($('body').hasClass('show-profile')) $(this).addClass('opened');
|
||
else $(this).removeClass('opened');
|
||
});
|
||
|
||
|
||
|
||
/* -------------------- Positionnement du lien "Support technique" -------------------- */
|
||
|
||
if ($('li.link-support').length > 0) {
|
||
var lastEntry = $('li.link-support').closest('ul').prev(),
|
||
lastY = lastEntry.offset().top + lastEntry.height() - 30,
|
||
maxMargin = window.innerHeight - $('.menu-left').offset().top - lastY;
|
||
$('li.link-support').css('margin-top', Math.max(40, maxMargin));
|
||
}
|
||
|
||
|
||
|
||
/* -------------------- Gestion des évènements sur le layout liés au scroll -------------------- */
|
||
|
||
var prevScrollpos,
|
||
scrollchange,
|
||
lastScrollpos = 0,
|
||
lastScrollmargin = 100;
|
||
|
||
document.addEventListener('scroll', function(e){
|
||
checkScroll()
|
||
}, this.supportsPassive ? { passive: true } : false);
|
||
|
||
function checkScroll() {
|
||
let currentScrollPos = window.pageYOffset,
|
||
scrollingdown = (prevScrollpos < currentScrollPos),
|
||
ismobile = window.innerWidth < 992,
|
||
hideheader = ismobile && currentScrollPos > 300,
|
||
exceeding = (currentScrollPos + window.innerHeight) > $(document).height();
|
||
if (exceeding) return;
|
||
if (scrollingdown) {
|
||
if (hideheader)
|
||
$('body').addClass('hideheader');
|
||
}
|
||
else {
|
||
if (currentScrollPos < (lastScrollpos - lastScrollmargin)) {
|
||
$('body').removeClass('hideheader');
|
||
}
|
||
}
|
||
if (scrollingdown == !$('body').hasClass('scrolldown')) {
|
||
lastScrollpos = currentScrollPos;
|
||
scrollchange = document.dispatchEvent(new CustomEvent('scrollchange', { detail: { dir: (scrollingdown) ? 'down' : 'up', pos: currentScrollPos }}));
|
||
}
|
||
$('body').toggleClass('scrolldown', scrollingdown);
|
||
prevScrollpos = currentScrollPos;
|
||
}
|
||
|
||
|
||
|
||
/* -------------------- Instanciation de la navigation par système de scroll -------------------- */
|
||
|
||
if ($('#scrollnav').length > 0)
|
||
ScrollNav = new Scrollnav({
|
||
container: 'body',
|
||
context: 'article',
|
||
selector: '#scrollnav'
|
||
});
|
||
|
||
|
||
|
||
/* -------------------- Instanciation du suivi des éléments "sticky" -------------------- */
|
||
|
||
if ($('.sticky').length > 0)
|
||
StickyObserver = new Stickyobserver({
|
||
container: 'html, body',
|
||
selector: '.sticky',
|
||
stucked: 'is-stuck'
|
||
});
|
||
|
||
|
||
|
||
/* -------------------- Menu ERP -------------------- */
|
||
|
||
if ($('#erp-menu').length > 0)
|
||
MenuERP = new Slidemenu({
|
||
id: '#erp-menu',
|
||
lang: {
|
||
'addfav': 'Ajouter à mes favoris',
|
||
'delfav': 'Supprimer de mes favoris',
|
||
'confirm': 'Êtes-vous sûr(e) de vouloir supprimer ce lien de vos favoris ?',
|
||
'empty': 'Vous n\'avez défini aucun favori',
|
||
'cancel': 'Annuler',
|
||
'delete': 'Supprimer'
|
||
},
|
||
favorites: {
|
||
selector: '.favorites',
|
||
toggler: '.toggle-favorites a',
|
||
onChange: function (e) {
|
||
console.log('Les favoris ont été modifiés (' + e.action + ')');
|
||
switch (e.action) {
|
||
case 'reorder' :
|
||
break;
|
||
case 'added' :
|
||
infopanel.add({
|
||
bgcolor: 'success',
|
||
hideafter: 2000,
|
||
content: 'Le favori a bien été ajouté.'
|
||
});
|
||
break;
|
||
case 'removed' :
|
||
infopanel.add({
|
||
bgcolor: 'success',
|
||
hideafter: 2000,
|
||
content: 'Le favori a bien été supprimé.'
|
||
});
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
});
|
||
|
||
|
||
|
||
/* -------------------- Menu ERP -------------------- */
|
||
|
||
if ($('body').is('.erp:not(.dashboard)') && $('.subheader #options').length > 0)
|
||
$('.subheader #options')
|
||
.on('show.bs.collapse', function () {
|
||
$('.subheader h1').removeClass('text-truncate');
|
||
})
|
||
.on('hide.bs.collapse', function () {
|
||
$('.subheader h1').addClass('text-truncate');
|
||
});
|
||
|
||
|
||
|
||
/* -------------------- Panneau d'information (top) -------------------- */
|
||
|
||
infopanel = new Infopanel({
|
||
position: 'top'
|
||
});
|
||
|
||
|
||
|
||
/* -------------------- Gestion des blocs extensibles dans Flickity -------------------- */
|
||
|
||
checkScrollable = function (obj) {
|
||
if (checkExpandableH(obj)) obj.find('.toggle-fullH').removeClass('d-none');
|
||
else obj.find('.toggle-fullH').addClass('d-none');
|
||
}
|
||
checkExpandableH = function (obj) {
|
||
return (obj.height() < obj[0].scrollHeight);
|
||
}
|
||
$('.expandable').each(function() {
|
||
var $this = $(this);
|
||
$(this).find('.toggle-fullH')
|
||
.click(function(e) {
|
||
$(this)
|
||
.closest('.expandable')
|
||
.toggleClass('showall')
|
||
.closest('.isflickity').flickity('resize');
|
||
if (!$(this).closest('.expandable').hasClass('showall') && $(this).closest('.isflickity').data('flickity').isDraggable)
|
||
$(window).scrollTop($(this).closest('.isflickity').offset().top - 100);
|
||
});
|
||
new ResizeSensor($(this), function() {
|
||
checkScrollable($this);
|
||
});
|
||
});
|
||
|
||
$('.sticky').each(function() {
|
||
$(this).parent().addClass('has-sticky');
|
||
});
|
||
|
||
|
||
|
||
/* -------------------- Instanciation de bootstrap-select (champs select enrichis) -------------------- */
|
||
|
||
if ($('.bs-select').length > 0)
|
||
$('.bs-select').selectpicker({
|
||
style: '',
|
||
styleBase: 'form-control custom-select',
|
||
tickIcon: 'far fa-md fa-check text-white',
|
||
selectedTextFormat: 'count'
|
||
})
|
||
|
||
|
||
|
||
/* -------------------- Tooltips Bootstrap -------------------- */
|
||
|
||
$('[data-toggle="tooltip"]')
|
||
.tooltip({
|
||
delay: {
|
||
'show': 500,
|
||
'hide': 100
|
||
}
|
||
})
|
||
.click(function(e) {
|
||
$(this).tooltip('hide');
|
||
});
|
||
|
||
if (istouch) {
|
||
$(document)
|
||
.on('show.bs.tooltip', '[data-toggle="tooltip"]', function(e){
|
||
$(this).tooltip('dispose');
|
||
$(this).trigger('click');
|
||
});
|
||
}
|
||
|
||
|
||
|
||
/* -------------------- Popovers Bootstrap -------------------- */
|
||
|
||
if (istouch) $('[data-toggle="popover"][data-trigger="hover"]').removeAttr('data-trigger');
|
||
|
||
$(document)
|
||
.on('click mouseover', '[data-toggle="popover"]', function(e) {
|
||
let $this = this,
|
||
popover = ($(this).data('bs.popover')) ? $(this).data('bs.popover').tip : null;
|
||
if ($(this).attr('aria-describedby')) {
|
||
clearTimeout(popover.hidepopoverTo);
|
||
return;
|
||
}
|
||
if ((e.type == 'mouseover' && $(this).attr('data-trigger') == 'hover') || e.type == 'click') {
|
||
if ($('[data-toggle="popover"][aria-describedby]').length > 0)
|
||
$('[data-toggle="popover"][aria-describedby]').popover('hide');
|
||
popover = createPopover($(this), {
|
||
'title': '<h3 class="text">' + $(this).attr('title') + '</h3>',
|
||
'content': $($this).attr('data-content') || {url: $($this).attr('data-extcontent')}
|
||
});
|
||
}
|
||
})
|
||
.on('mouseleave', '[data-toggle="popover"]', function(e) {
|
||
let $this = this,
|
||
timer = ($(this).attr('data-trigger') == 'hover') ? 300 : 1000;
|
||
popover = ($(this).data('bs.popover')) ? $(this).data('bs.popover').tip : null;
|
||
if (popover) {
|
||
clearTimeout(popover.hidepopoverTo);
|
||
popover.hidepopoverTo = setTimeout(function(){
|
||
$($this).popover('hide');
|
||
}, timer);
|
||
}
|
||
});
|
||
|
||
$(document)
|
||
.on('mouseleave', '.popover', function (e) {
|
||
let $this = this,
|
||
source = $('[aria-describedby="' + $(this).attr('id') + '"]'),
|
||
timer = (source.attr('data-trigger') == 'hover') ? 300 : 1000;
|
||
clearTimeout(this.hidepopoverTo);
|
||
if ($(this).find('*:focus').is(':input')) return;
|
||
this.hidepopoverTo = setTimeout(function(){
|
||
$($this).popover('hide');
|
||
}, timer);
|
||
})
|
||
.on('mouseenter', '.popover', function (e) {
|
||
clearTimeout(this.hidepopoverTo);
|
||
});
|
||
|
||
createPopover = function (source, ctn) {
|
||
isext = ctn.content.constructor === Object;
|
||
return source.popover({
|
||
trigger: 'manual',
|
||
html: true,
|
||
sanitize: false,
|
||
boundary: 'viewport',
|
||
content: function () {
|
||
return $(this).attr('data-content') || '<span class="loader"><div class="spin"></div></span>';
|
||
},
|
||
template: '<div class="popover">' +
|
||
'<div class="arrow"></div>' +
|
||
'<div class="popover-header text-truncate"></div>' +
|
||
'<div class="popover-body"></div>' +
|
||
'<div class="popover-footer"></div>' +
|
||
'</div>'
|
||
})
|
||
.on('shown.bs.popover', function () {
|
||
let $this = $(this),
|
||
exturl = ($(this).attr('data-extcontent')) ? $(this).attr('data-extcontent') : null,
|
||
content = $($(this).data('bs.popover').tip).find('.popover-body');
|
||
if (exturl)
|
||
content.load(exturl, function() {
|
||
let action = $(this).find('.popover-action'),
|
||
hasaction = action.length > 0;
|
||
if (hasaction)
|
||
$('.popover-footer').html(action);
|
||
$this.popover('update');
|
||
});
|
||
})
|
||
.popover('show');
|
||
};
|
||
|
||
$('body *')
|
||
.on('mousedown', function(e) {
|
||
if ($('[data-toggle="popover"][aria-describedby]').length > 0 && !$(e.target).parents('.popover').length > 0) {
|
||
e.stopPropagation();
|
||
$('[data-toggle="popover"][aria-describedby]').each(function() {
|
||
$(this).popover('hide');
|
||
});
|
||
}
|
||
});
|
||
|
||
|
||
|
||
/* -------------------- Modales Boostrap -------------------- */
|
||
|
||
$(document)
|
||
.on('click', '[data-toggle="modal"]', function(e) {
|
||
var $this = this;
|
||
if (modal) modal.modal('hide');
|
||
modal = createModal('modal', $(this).attr('data-modal-size'), {
|
||
'title': '<h3 class="text">' + $(this).attr('title') + '</h3>',
|
||
'content': $($this).attr('data-content') || {url: $($this).attr('data-extcontent')}
|
||
});
|
||
});
|
||
|
||
createModal = function (id, size='md', ctn) {
|
||
isext = ctn.content.constructor === Object;
|
||
var header = $('<div class="modal-header"/>')
|
||
.append(ctn.title)
|
||
.append('<button type="button" class="close" data-dismiss="modal" aria-label="Close">'
|
||
+ '<span aria-hidden="true">×</span>'
|
||
+ '</button>');
|
||
content = $('<div class="modal-body"/>')
|
||
.append((!isext)
|
||
? (/<\/?[a-z][\s\S]*>/i.test(ctn.content))
|
||
? $(ctn.content)
|
||
: ctn.content
|
||
: '<span class="loader"><div class="spin"></div></span>'
|
||
),
|
||
footer = $('<div class="modal-footer"/>')
|
||
.append(ctn.footer),
|
||
body = $('<div class="modal-content p-2"/>')
|
||
.append(header)
|
||
.append(content)
|
||
.append(footer),
|
||
dialog = $('<div class="modal-dialog modal-dialog-centered modal-' + size + '" role="document"/>')
|
||
.append(body),
|
||
modal = $('<div class="modal fade" id="' + id + '" tabindex="-1" role="dialog" aria-hidden="true"/>')
|
||
.append(dialog);
|
||
modal.modal().on('hidden.bs.modal', function (e) {
|
||
$(this)
|
||
.data('bs.modal', null)
|
||
.remove();
|
||
});
|
||
if (ctn.content.constructor === Object)
|
||
content.load(ctn.content.url, function() {
|
||
|
||
if (body.find('.bs-select').length > 0)
|
||
body.find('.bs-select').selectpicker({
|
||
style: '',
|
||
styleBase: 'form-control custom-select',
|
||
tickIcon: 'far fa-md fa-check text-white',
|
||
selectedTextFormat: 'count'
|
||
})
|
||
})
|
||
return modal.appendTo('body');
|
||
};
|
||
|
||
|
||
|
||
/* -------------------- Actions à effectuer au resize (wrapper & article) -------------------- */
|
||
|
||
var wrapperRS = new ResizeSensor($('.wrapper, article'), function(){
|
||
let w = window.innerWidth;
|
||
if ($('nav.menu-left').length > 0)
|
||
checkLeftMenus(w);
|
||
$('.isflickity').each(function() {
|
||
//checkFlickity($(this).flickity('resize'));
|
||
$(this).flickity('resize');
|
||
});
|
||
});
|
||
|
||
|
||
|
||
|
||
/* ======================================== Eléments de test ======================================== */
|
||
|
||
|
||
/* -------------------- Test de saisie erronée (login) -------------------- */
|
||
|
||
$('body.login form').submit(function() {
|
||
$(this).parents('.card').addClass('haserror');
|
||
$(this).find('input').addClass('is-invalid');
|
||
return false;
|
||
});
|
||
|
||
|
||
|
||
/* -------------------- Test de saisie erronée (login) -------------------- */
|
||
|
||
$('body.login form').submit(function() {
|
||
$(this).parents('.card').addClass('haserror');
|
||
$(this).find('input').addClass('is-invalid');
|
||
return false;
|
||
});
|
||
|
||
|
||
|
||
/* -------------------- Test (coordonnées : passage en mode "édition") -------------------- */
|
||
|
||
$('aside.profile a.modify, aside.profile a.valid, aside.profile a.cancel').click(function() {
|
||
$(this).parents('form')
|
||
.toggleClass('readonly')
|
||
.find('input, select').each(function() {
|
||
if ($(this).attr('disabled'))
|
||
$(this).removeAttr('disabled');
|
||
else
|
||
$(this).attr('disabled', 'disabled');
|
||
if ($(this).hasClass('bs-select')) $(this).selectpicker('refresh');
|
||
});
|
||
});
|
||
|
||
|
||
|
||
/* -------------------- Test menu gauche (développement / réduction) -------------------- */
|
||
|
||
if ($('body').is('.esp-cl')) {
|
||
$('nav.menu-left a.toggler').click(function() {
|
||
$('body').toggleClass('reduced-menu-left');
|
||
});
|
||
}
|
||
if ($('body').is('.erp')) {
|
||
var menuswapTo;
|
||
$('nav.menu-left')
|
||
.mouseenter(function() {
|
||
clearTimeout(menuswapTo);
|
||
if ($('body').hasClass('pinned-menu-left')) return false;
|
||
if ($('body').hasClass('reduced-menu-left'))
|
||
menuswapTo = setTimeout(function() {
|
||
$('body').toggleClass('reduced-menu-left')
|
||
}, 200);
|
||
})
|
||
.mouseleave(function() {
|
||
clearTimeout(menuswapTo);
|
||
if ($('body').hasClass('pinned-menu-left')) return false;
|
||
if (!$('body').hasClass('reduced-menu-left'))
|
||
menuswapTo = setTimeout(function() {
|
||
$('body').toggleClass('reduced-menu-left');
|
||
}, 750);
|
||
})
|
||
.find('a.toggler')
|
||
.click(function() {
|
||
$('body')
|
||
.addClass('reduced-menu-left')
|
||
.toggleClass('pinned-menu-left');
|
||
clearTimeout(menuswapTo);
|
||
});
|
||
|
||
}
|
||
|
||
|
||
|
||
});
|
||
|
||
|