UNPKG

scms

Version:

Skrap Content Management System for blogs and etc...

108 lines (91 loc) 4.1 kB
jQuery(document).ready(function($){ //store DOM elements var imageWrapper = $('.cd-images-list'), imagesList = imageWrapper.children('li'), contentWrapper = $('.cd-content-block'), contentList = contentWrapper.children('ul').eq(0).children('li'), blockNavigation = $('.block-navigation'), blockNavigationNext = blockNavigation.find('.cd-next'), blockNavigationPrev = blockNavigation.find('.cd-prev'), //used to check if the animation is running animating = false; //on mobile - open a single project content when selecting a project image imageWrapper.on('click', 'a', function(event){ event.preventDefault(); var device = MQ(); (device == 'mobile') && updateBlock(imagesList.index($(this).parent('li')), 'mobile'); }); //on mobile - close visible project when clicking the .cd-close btn contentWrapper.on('click', '.cd-close', function(){ var closeBtn = $(this); if( !animating ) { animating = true; closeBtn.removeClass('is-scaled-up').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(){ contentWrapper.removeClass('is-visible').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(){ animating = false; }); $('.cd-image-block').removeClass('content-block-is-visible'); closeBtn.off('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend'); }); } }); //on desktop - update visible project when clicking the .block-navigation blockNavigation.on('click', 'button', function(){ var direction = $(this), indexVisibleblock = imagesList.index(imageWrapper.children('li.is-selected')); if( !direction.hasClass('inactive') ) { var index = ( direction.hasClass('cd-next') ) ? (indexVisibleblock + 1) : (indexVisibleblock - 1); updateBlock(index); } }); //on desktop - update visible project on keydown $(document).on('keydown', function(event){ var device = MQ(); if( event.which=='39' && !blockNavigationNext.hasClass('inactive') && device == 'desktop') { //go to next project updateBlock(imagesList.index(imageWrapper.children('li.is-selected')) + 1); } else if( event.which=='37' && !blockNavigationPrev.hasClass('inactive') && device == 'desktop' ) { //go to previous project updateBlock(imagesList.index(imageWrapper.children('li.is-selected')) - 1); } }); function updateBlock(n, device) { if( !animating) { animating = true; var imageItem = imagesList.eq(n), contentItem = contentList.eq(n); classUpdate($([imageItem, contentItem])); if( device == 'mobile') { contentItem.scrollTop(0); $('.cd-image-block').addClass('content-block-is-visible'); contentWrapper.addClass('is-visible').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(){ contentWrapper.find('.cd-close').addClass('is-scaled-up'); animating = false; }); } else { contentList.addClass('overflow-hidden'); contentItem.one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(){ contentItem.siblings().scrollTop(0); contentList.removeClass('overflow-hidden'); animating = false; }); } //if browser doesn't support transition if( $('.no-csstransitions').length > 0 ) animating = false; updateBlockNavigation(n); } } function classUpdate(items) { items.each(function(){ var item = $(this); item.addClass('is-selected').removeClass('move-left').siblings().removeClass('is-selected').end().prevAll().addClass('move-left').end().nextAll().removeClass('move-left'); }); } function updateBlockNavigation(n) { ( n == 0 ) ? blockNavigationPrev.addClass('inactive') : blockNavigationPrev.removeClass('inactive'); ( n + 1 >= imagesList.length ) ? blockNavigationNext.addClass('inactive') : blockNavigationNext.removeClass('inactive'); } function MQ() { return window.getComputedStyle(imageWrapper.get(0), '::before').getPropertyValue('content').replace(/'/g, "").replace(/"/g, "").split(', '); } });