2021-03-08 18:40:20 +01:00
/ *
scripts . js
License : GNU General Public License v3 . 0
License URI : http : //www.gnu.org/licenses/gpl-3.0.html
2025-04-07 15:32:07 +02:00
Copyright : ( c ) 2013 Alexander "Alx" Agnarson , https : //agnarson.com
2021-03-08 18:40:20 +01:00
* /
"use strict" ;
jQuery ( document ) . ready ( function ( $ ) {
/ * T o g g l e h e a d e r s e a r c h
/* ------------------------------------ */
$ ( '.toggle-search' ) . on ( 'click' , function ( ) {
$ ( '.toggle-search' ) . toggleClass ( 'active' ) ;
$ ( '.search-expand' ) . fadeToggle ( 250 ) ;
setTimeout ( function ( ) {
$ ( '.search-expand input' ) . focus ( ) ;
} , 300 ) ;
} ) ;
/ * S c r o l l t o t o p
/* ------------------------------------ */
$ ( 'a#back-to-top' ) . on ( 'click' , function ( ) {
$ ( 'html, body' ) . animate ( { scrollTop : 0 } , 'slow' ) ;
return false ;
} ) ;
/ * T a b s w i d g e t
/* ------------------------------------ */
( function ( ) {
var $tabsNav = $ ( '.alx-tabs-nav' ) ,
$tabsNavLis = $tabsNav . children ( 'li' ) ,
$tabsContainer = $ ( '.alx-tabs-container' ) ;
$tabsNav . each ( function ( ) {
var $this = $ ( this ) ;
$this . next ( ) . children ( '.alx-tab' ) . stop ( true , true ) . hide ( )
. siblings ( $this . find ( 'a' ) . attr ( 'href' ) ) . show ( ) ;
$this . children ( 'li' ) . first ( ) . addClass ( 'active' ) . stop ( true , true ) . show ( ) ;
} ) ;
$tabsNavLis . on ( 'click' , function ( e ) {
var $this = $ ( this ) ;
$this . siblings ( ) . removeClass ( 'active' ) . end ( )
. addClass ( 'active' ) ;
$this . parent ( ) . next ( ) . children ( '.alx-tab' ) . stop ( true , true ) . hide ( )
. siblings ( $this . find ( 'a' ) . attr ( 'href' ) ) . fadeIn ( ) ;
e . preventDefault ( ) ;
} ) . children ( window . location . hash ? 'a[href="' + window . location . hash + '"]' : 'a:first' ) . trigger ( 'click' ) ;
} ) ( ) ;
/* Comments / pingbacks tabs
/* ------------------------------------ */
$ ( '.comment-tabs li' ) . on ( 'click' , function ( ) {
$ ( '.comment-tabs li' ) . removeClass ( 'active' ) ;
$ ( this ) . addClass ( 'active' ) ;
$ ( '.comment-tab' ) . hide ( ) ;
var selected _tab = $ ( this ) . find ( 'a' ) . attr ( 'href' ) ;
$ ( selected _tab ) . fadeIn ( ) ;
return false ;
} ) ;
/ * T a b l e o d d r o w c l a s s
/* ------------------------------------ */
$ ( 'table tr:odd' ) . addClass ( 'alt' ) ;
/ * F i t v i d s
/* ------------------------------------ */
function responsiveVideo ( ) {
if ( $ ( ) . fitVids ) {
$ ( '#wrapper' ) . fitVids ( ) ;
}
}
responsiveVideo ( ) ;
/ * H e a d e r S t i c k y
/* ------------------------------------ */
$ ( '.logged-out #header-sticky' ) . stickThis ( {
top : 0 ,
minscreenwidth : 1025 ,
maxscreenwidth : 999999 ,
zindex : 99 ,
debugmode : false ,
pushup : ''
} ) ;
$ ( '.admin-bar #header-sticky' ) . stickThis ( {
top : 32 ,
minscreenwidth : 1025 ,
maxscreenwidth : 999999 ,
zindex : 99 ,
debugmode : false ,
pushup : ''
} ) ;
/ * H i d e o n s c r o l l d o w n
/* ------------------------------------ */
var scrollTimeOut = true ,
lastYPos = 0 ,
yPos = 0 ,
yPosDelta = 5 ,
nav = $ ( '.hide-on-scroll-down' ) ,
navHeight = nav . outerHeight ( ) ,
setNavClass = function ( ) {
scrollTimeOut = false ;
yPos = $ ( window ) . scrollTop ( ) ;
if ( Math . abs ( lastYPos - yPos ) >= yPosDelta ) {
if ( yPos > lastYPos && yPos > navHeight ) {
nav . addClass ( 'hide-scroll' ) ;
} else {
nav . removeClass ( 'hide-scroll' ) ;
}
lastYPos = yPos ;
}
} ;
$ ( window ) . scroll ( function ( e ) {
scrollTimeOut = true ;
} ) ;
setInterval ( function ( ) {
if ( scrollTimeOut ) {
setNavClass ( ) ;
}
} , 250 ) ;
/ * S l i c k f e a t u r e d p o s t s
/* ------------------------------------ */
$ . fn . randomize = function ( selector ) {
var $elems = selector ? $ ( this ) . find ( selector ) : $ ( this ) . children ( ) ,
$parents = $elems . parent ( ) ;
$parents . each ( function ( ) {
$ ( this ) . children ( selector ) . sort ( function ( childA , childB ) {
// * Prevent last slide from being reordered
if ( $ ( childB ) . index ( ) !== $ ( this ) . children ( selector ) . length - 0.5 ) {
return Math . round ( Math . random ( ) ) - 0.5 ;
}
} . bind ( this ) ) . detach ( ) . appendTo ( this ) ;
} ) ;
return this ;
} ;
$ ( ".slick-posts" ) . randomize ( ) . slick ( {
centerMode : true ,
centerPadding : '180px' ,
slidesToShow : 4 ,
appendArrows : '.slick-posts-nav' ,
responsive : [
{
breakpoint : 1280 ,
settings : {
arrows : true ,
centerMode : true ,
centerPadding : '40px' ,
slidesToShow : 3
}
} ,
{
breakpoint : 1024 ,
settings : {
arrows : true ,
centerMode : true ,
centerPadding : '40px' ,
slidesToShow : 2
}
} ,
{
breakpoint : 768 ,
settings : {
arrows : true ,
centerMode : true ,
centerPadding : '40px' ,
slidesToShow : 2
}
} ,
{
breakpoint : 480 ,
settings : {
arrows : true ,
centerMode : true ,
centerPadding : '40px' ,
slidesToShow : 1
}
}
]
} ) ;
$ ( '.slick-posts' ) . show ( ) ;
/ * S l i c k i m a g e s l i d e
/* ------------------------------------ */
$ ( '.slick-image-slide' ) . each ( function ( ) {
$ ( this ) . slick ( {
dots : true ,
adaptiveHeight : true ,
appendArrows : $ ( this ) . parents ( '.slick-image-slide-wrapper' ) . find ( '.slick-image-slide-nav' ) ,
appendDots : $ ( this ) . parents ( '.slick-image-slide-wrapper' ) . find ( '.slick-image-slide-dots' )
} ) ;
} ) ;
$ ( '.slick-image-slide-wrapper' ) . show ( ) ;
/ * T r a p f o c u s
/* ------------------------------------ */
// add all the elements inside modal which you want to make focusable
const focusableElements =
'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])' ;
const modal = document . querySelector ( '.search-trap-focus' ) ; // select the modal by it's id
if ( modal ) {
const firstFocusableElement = modal . querySelectorAll ( focusableElements ) [ 0 ] ; // get first element to be focused inside modal
const focusableContent = modal . querySelectorAll ( focusableElements ) ;
const lastFocusableElement = focusableContent [ focusableContent . length - 1 ] ; // get last element to be focused inside modal
document . addEventListener ( 'keydown' , function ( e ) {
let isTabPressed = e . key === 'Tab' || e . keyCode === 9 ;
if ( ! isTabPressed ) {
return ;
}
if ( e . shiftKey ) { // if shift key pressed for shift + tab combination
if ( document . activeElement === firstFocusableElement ) {
lastFocusableElement . focus ( ) ; // add focus for the last focusable element
e . preventDefault ( ) ;
}
} else { // if tab key is pressed
if ( document . activeElement === lastFocusableElement ) { // if focused has reached to last focusable element then focus first focusable element after pressing tab
firstFocusableElement . focus ( ) ; // add focus for the first focusable element
e . preventDefault ( ) ;
}
}
} ) ;
}
} ) ;