Ghost_Ruby_Theme/assets/js/main.js

219 lines
5.5 KiB
JavaScript
Raw Normal View History

var body = $('body');
2019-05-04 19:02:00 +03:00
2019-05-08 19:38:28 +03:00
window.lazySizesConfig = window.lazySizesConfig || {};
window.lazySizesConfig.loadHidden = false;
2019-04-29 19:46:11 +03:00
$(function () {
'use strict';
2020-09-24 05:25:42 +03:00
author();
stickySidebar();
pagination();
facebook();
gallery();
offCanvas();
2019-04-29 19:46:11 +03:00
});
2019-04-30 18:00:55 +03:00
function author() {
'use strict';
$('.author-name').on('click', function () {
$(this).next('.author-social').toggleClass('enabled');
2020-09-24 05:25:42 +03:00
});
2019-04-30 18:00:55 +03:00
}
function stickySidebar() {
'use strict';
2020-09-24 05:25:42 +03:00
var marginTop = 30;
2019-04-30 18:00:55 +03:00
jQuery('.sidebar-column, .related-column').theiaStickySidebar({
2020-09-24 05:25:42 +03:00
additionalMarginTop: marginTop,
additionalMarginBottom: 30,
});
2019-05-04 08:01:50 +03:00
}
function pagination() {
'use strict';
var wrapper = $('.post-feed .row');
var button = $('.infinite-scroll-button');
2020-09-24 05:25:42 +03:00
if (body.hasClass('paged-next')) {
wrapper.on('request.infiniteScroll', function (event, path) {
2020-09-24 05:25:42 +03:00
button.hide();
});
wrapper.on('load.infiniteScroll', function (event, response, path) {
if ($(response).find('body').hasClass('paged-next')) {
2020-09-24 05:25:42 +03:00
button.show();
}
});
wrapper.infiniteScroll({
append: '.post-column',
button: '.infinite-scroll-button',
2020-09-24 05:25:42 +03:00
debug: false,
hideNav: '.pagination',
2020-09-24 05:25:42 +03:00
history: false,
path: '.pagination .older-posts',
2020-09-24 05:25:42 +03:00
scrollThreshold: false,
status: '.infinite-scroll-status',
2020-09-24 05:25:42 +03:00
});
}
2019-05-04 19:02:00 +03:00
}
function facebook() {
'use strict';
var widget = $('.widget-facebook');
2020-09-24 05:25:42 +03:00
if (
widget.find('.fb-page').attr('data-href') ==
'__YOUR_FACEBOOK_PAGE_URL__'
2020-09-24 05:25:42 +03:00
) {
widget.remove();
}
}
2019-05-14 18:48:55 +03:00
function gallery() {
'use strict';
var images = document.querySelectorAll('.kg-gallery-image img');
2020-09-24 05:25:42 +03:00
images.forEach(function (image) {
var container = image.closest('.kg-gallery-image');
2020-09-24 05:25:42 +03:00
var width = image.attributes.width.value;
var height = image.attributes.height.value;
var ratio = width / height;
container.style.flex = ratio + ' 1 0%';
2020-09-24 05:25:42 +03:00
});
2019-05-14 18:48:55 +03:00
2020-09-24 05:25:42 +03:00
pswp(
'.kg-gallery-container',
'.kg-gallery-image',
'.kg-gallery-image',
2020-09-24 05:25:42 +03:00
false,
true
);
pswp('.kg-image-card', '.kg-image', '.kg-image', false, false);
2019-05-14 18:48:55 +03:00
}
2020-09-24 05:25:42 +03:00
function offCanvas() {
'use strict';
$('.burger:not(.burger.close)').on('click', function () {
body.addClass('canvas-visible canvas-opened');
dimmer('open', 'medium');
2020-03-22 10:50:59 +02:00
});
$('.burger-close').on('click', function () {
if (body.hasClass('canvas-opened')) {
body.removeClass('canvas-opened');
dimmer('close', 'medium');
2020-09-24 05:25:42 +03:00
}
});
2020-03-22 10:50:59 +02:00
$('.dimmer').on('click', function () {
if (body.hasClass('canvas-opened')) {
body.removeClass('canvas-opened');
dimmer('close', 'medium');
2020-09-24 05:25:42 +03:00
}
});
}
2020-03-22 10:50:59 +02:00
2020-09-24 05:25:42 +03:00
function pswp(container, element, trigger, caption, isGallery) {
var parseThumbnailElements = function (el) {
var items = [],
gridEl,
linkEl,
item;
$(el)
.find(element)
.each(function (i, v) {
gridEl = $(v);
linkEl = gridEl.find(trigger);
item = {
src: isGallery
? gridEl.find('img').attr('src')
: gridEl.attr('src'),
2020-09-24 05:25:42 +03:00
w: 0,
h: 0,
};
if (caption && gridEl.find(caption).length) {
item.title = gridEl.find(caption).html();
}
items.push(item);
});
return items;
2020-03-22 10:50:59 +02:00
};
2020-09-24 05:25:42 +03:00
var openPhotoSwipe = function (index, galleryElement) {
var pswpElement = document.querySelectorAll('.pswp')[0],
2020-09-24 05:25:42 +03:00
gallery,
options,
items;
items = parseThumbnailElements(galleryElement);
options = {
closeOnScroll: false,
history: false,
index: index,
shareEl: false,
showAnimationDuration: 0,
showHideOpacity: true,
};
gallery = new PhotoSwipe(
pswpElement,
PhotoSwipeUI_Default,
items,
options
);
gallery.listen('gettingData', function (index, item) {
2020-09-24 05:25:42 +03:00
if (item.w < 1 || item.h < 1) {
// unknown size
var img = new Image();
img.onload = function () {
// will get size after load
item.w = this.width; // set image width
item.h = this.height; // set image height
gallery.updateSize(true); // reinit Items
};
img.src = item.src; // let's download image
}
});
gallery.init();
};
2020-03-22 10:50:59 +02:00
2020-09-24 05:25:42 +03:00
var onThumbnailsClick = function (e) {
e.preventDefault();
2020-03-22 10:50:59 +02:00
2020-09-24 05:25:42 +03:00
var index = $(e.target)
.closest(container)
.find(element)
.index($(e.target).closest(element));
var clickedGallery = $(e.target).closest(container);
2020-03-22 10:50:59 +02:00
2020-09-24 05:25:42 +03:00
openPhotoSwipe(index, clickedGallery[0]);
2020-03-22 10:50:59 +02:00
2020-09-24 05:25:42 +03:00
return false;
};
2020-03-22 10:50:59 +02:00
$(container).on('click', trigger, function (e) {
2020-09-24 05:25:42 +03:00
onThumbnailsClick(e);
});
2020-03-22 10:50:59 +02:00
}
2019-05-08 19:38:28 +03:00
function dimmer(action, speed) {
'use strict';
var dimmer = $('.dimmer');
2020-09-24 05:25:42 +03:00
switch (action) {
case 'open':
2020-09-24 05:25:42 +03:00
dimmer.fadeIn(speed);
break;
case 'close':
2020-09-24 05:25:42 +03:00
dimmer.fadeOut(speed);
break;
}
}