169 lines
6.4 KiB
JavaScript
169 lines
6.4 KiB
JavaScript
theme.Presentation = function() {
|
|
|
|
function Presentation() {
|
|
this.settings = {
|
|
sections_control_container: [
|
|
'header',
|
|
'gallery',
|
|
'home-builder',
|
|
'information-line',
|
|
'footer'
|
|
],
|
|
actions: ['container', 'rtl', 'animation']
|
|
};
|
|
|
|
this.dom = {
|
|
$presentation: $('.js-presentation')
|
|
};
|
|
|
|
this.load();
|
|
};
|
|
|
|
Presentation.prototype = $.extend({}, Presentation.prototype, {
|
|
load: function() {
|
|
var _ = this,
|
|
animations = {};
|
|
|
|
for(var key in theme.animations) {
|
|
animations[key] = {};
|
|
|
|
for(var k in theme.animations[key]) {
|
|
animations[key][k] = theme.animations[key][k];
|
|
}
|
|
}
|
|
|
|
function toggleState(action, enable) {
|
|
if(action === 'container') {
|
|
$.each(_.settings.sections_control_container, function() {
|
|
$('[data-section-type="' + this + '"]').each(function () {
|
|
var $this = $(this);
|
|
|
|
if(enable) {
|
|
if($this.hasClass('container')) {
|
|
$this.attr('data-has-container', true);
|
|
}
|
|
|
|
$this.addClass('container presentation-container-enabled');
|
|
|
|
if($this.attr('data-boxed-without-paddings') === 'true') {
|
|
$this.addClass('px-0');
|
|
}
|
|
} else {
|
|
if(!$this[0].hasAttribute('data-has-container')) {
|
|
$this.removeClass();
|
|
} else {
|
|
$this.removeAttr('data-has-container');
|
|
}
|
|
|
|
if($this.attr('data-boxed-without-paddings') === 'true') {
|
|
$this.removeClass('px-0');
|
|
}
|
|
|
|
$this.removeClass('presentation-container-enabled');
|
|
}
|
|
});
|
|
});
|
|
|
|
$window.trigger('resize');
|
|
|
|
if(theme.Masonry) {
|
|
theme.Masonry.update();
|
|
}
|
|
} else if(action === 'rtl') {
|
|
$html.attr('dir', enable ? 'rtl' : 'ltr');
|
|
theme.rtl = enable;
|
|
|
|
$('.slick-slider.slick-initialized').not('.slick-vertical').each(function () {
|
|
var $this = $(this),
|
|
options = $this.slick('getSlick').originalSettings;
|
|
|
|
options.rtl = theme.rtl;
|
|
|
|
$this.slick('unslick');
|
|
$this.slick(options);
|
|
});
|
|
|
|
$window.trigger('resize');
|
|
} else if(action === 'animation') {
|
|
$body[enable ? 'addClass' : 'removeClass']('theme-css-animate');
|
|
|
|
if(enable) {
|
|
for(var key in animations) {
|
|
for(var k in animations[key]) {
|
|
theme.animations[key][k] = animations[key][k];
|
|
}
|
|
}
|
|
} else {
|
|
theme.animations.tooltip.show_duration = 0;
|
|
theme.animations.tooltip.hide_duration = 0;
|
|
theme.animations.sticky_header.duration = 0;
|
|
theme.animations.header_tape.duration = 0;
|
|
theme.animations.menu.duration = 0;
|
|
theme.animations.dropdown.duration = 0;
|
|
theme.animations.accordion.duration = 0;
|
|
theme.animations.tabs.duration = 0;
|
|
theme.animations.tabs.scroll_duration = 0;
|
|
theme.animations.backtotop.scroll_duration = 0;
|
|
}
|
|
}
|
|
};
|
|
|
|
$.each(this.settings.actions, function(i, v) {
|
|
var $button = _.dom.$presentation.find('[data-js-action="' + this + '"]');
|
|
|
|
if($.cookie('presentation-' + this) === 'enabled' && $button.attr('data-invert') !== 'true' && !$button.is(':checked')) {
|
|
toggleState(v, true);
|
|
$button.prop('checked', 'checked');
|
|
} else if($.cookie('presentation-' + this) === 'enabled' && $button.attr('data-invert') === 'true' && $button.is(':checked')) {
|
|
toggleState(v, false);
|
|
$button.removeAttr('checked');
|
|
}
|
|
});
|
|
|
|
this.dom.$presentation.on('change', '[data-js-action]', function() {
|
|
var $this = $(this),
|
|
action = $this.attr('data-js-action'),
|
|
enable = $this.is(':checked'),
|
|
state = enable;
|
|
|
|
if($this.attr('data-invert') === 'true') {
|
|
state = !state;
|
|
}
|
|
|
|
$.cookie('presentation-' + action, state ? 'enabled' : null, {
|
|
expires: 60 * 60 * 1000,
|
|
path: '/'
|
|
});
|
|
|
|
setTimeout(function() {
|
|
toggleState(action, enable);
|
|
}, theme.animations.css.duration * 1000);
|
|
});
|
|
|
|
this.dom.$presentation.on('click', '[data-js-presentation-close]', function() {
|
|
if(_.dom.$presentation.hasClass('open')) {
|
|
_.dom.$presentation.removeClass('open');
|
|
} else {
|
|
_.dom.$presentation.addClass('open');
|
|
}
|
|
});
|
|
|
|
theme.Global.responsiveHandler({
|
|
namespace: '.presentation',
|
|
element: this.dom.$presentation,
|
|
on_desktop: true,
|
|
events: {
|
|
'mouseenter mouseleave': function(e) {
|
|
_.dom.$presentation[e.type === 'mouseenter' ? 'addClass' : 'removeClass']('open');
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
theme.Presentation = new Presentation;
|
|
};
|
|
|
|
$(function() {
|
|
theme.Presentation();
|
|
}); |