MediaWiki:PagedGallery.js: Difference between revisions

From Zelda Dungeon Wiki
Jump to navigation Jump to search
Want an adless experience? Log in or Create an account.
 
(fix all the bugs)
 
Line 10: Line 10:


   var navType = $button.data( 'nav' );
   var navType = $button.data( 'nav' );
   var currentPageNum = $pages.index( '.active' );
   var $currentPage = $pages.filter( '.active' );
   var pageNumToActivate =
   var $pageToActivate =
     navType == 'next' ? Math.max( currentPageNum + 1, $pages.length - 1 ) :
     navType == 'next' ? $currentPage.next( '.zdw-paged-gallery__page' ) :
     navType == 'prev' ? Math.min( currentPageNum - 1, 0 ) :
     navType == 'prev' ? $currentPage.prev( '.zdw-paged-gallery__page' ) :
     navType == 'last' ? $pages.length - 1 :
     navType == 'last' ? $pages.last() :
     0; // 'first' or any unknown type
     $pages.first(); // 'first' or any unknown type


   if ( pageNumToActivate != currentPageNum ) {
   if ( $pageToActivate.length && $pageToActivate[0] != $currentPage[0] ) {
     $pages.removeClass( 'active' );
     $currentPage.removeClass( 'active' );
     $pages.eq( pageNumToActivate ).addClass( 'active' );
     $pageToActivate.addClass( 'active' );
   }
   }
} );
} );
} );
} );

Latest revision as of 18:44, March 27, 2021

/*
Script enabling paged galleries, where one page (may be one or more images, or arbitrary content) is displayed at a time and previous/next buttons navigate the pages
*/

$( function() {
$( 'body' ).on( 'click', '.zdw-button--paging', function( e ) {
  var $button = $( this );
  var $gallery = $button.closest( '.zdw-paged-gallery' );
  var $pages = $gallery.children( '.zdw-paged-gallery__page' );

  var navType = $button.data( 'nav' );
  var $currentPage = $pages.filter( '.active' );
  var $pageToActivate =
    navType == 'next' ? $currentPage.next( '.zdw-paged-gallery__page' ) :
    navType == 'prev' ? $currentPage.prev( '.zdw-paged-gallery__page' ) :
    navType == 'last' ? $pages.last() :
    $pages.first(); // 'first' or any unknown type

  if ( $pageToActivate.length && $pageToActivate[0] != $currentPage[0] ) {
    $currentPage.removeClass( 'active' );
    $pageToActivate.addClass( 'active' );
  }
} );
} );