pressbooks aldine theme the theme used for the front page or default book
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

97 lines
3.1 KiB

import * as Cookies from 'js-cookie';
export default {
init() {
// JavaScript to be fired on all pages
// JavaScript to be fired on all pages
document.body.classList.remove( 'no-js' );
document.body.classList.add( 'js' );
// Font Size handler
( function () {
const fontSizeButton = document.querySelector( '.a11y-fontsize' );
if ( Cookies.get( 'a11y-root-larger-fontsize' ) === '1' ) {
document.documentElement.classList.add( 'fontsize' );
fontSizeButton.setAttribute( 'aria-pressed', true );
fontSizeButton.textContent = pressbooksBook.decrease_label;
}
fontSizeButton.onclick = () => {
// Cast the state as a boolean
let pressed = fontSizeButton.getAttribute( 'aria-pressed' ) === 'true' || false;
// Switch the state
fontSizeButton.setAttribute( 'aria-pressed', ! pressed );
if ( ! pressed ) {
document.documentElement.classList.add( 'fontsize' );
fontSizeButton.setAttribute( 'title', pressbooksBook.decrease_label );
fontSizeButton.textContent = pressbooksBook.decrease_label;
document.querySelector( '.nav-reading' ).setAttribute( 'style', '' );
Cookies.set( 'a11y-root-larger-fontsize', '1', {
expires: 365,
path: '/',
} );
return false;
} else {
document.documentElement.classList.remove( 'fontsize' );
fontSizeButton.setAttribute( 'title', pressbooksBook.increase_label );
fontSizeButton.textContent = pressbooksBook.increase_label;
document.querySelector( '.nav-reading' ).setAttribute( 'style', '' );
Cookies.set( 'a11y-root-larger-fontsize', '0', {
expires: 365,
path: '/',
} );
return false;
}
};
} )();
jQuery( $ => {
$( document ).ready( function () {
// Sets a -1 tabindex to ALL sections for .focus()-ing
let sections = document.getElementsByTagName( 'section' );
for ( let i = 0, max = sections.length; i < max; i++ ) {
sections[i].setAttribute( 'tabindex', -1 );
sections[i].className += ' focusable';
}
// If there is a '#' in the URL (someone linking directly to a page with an anchor), go directly to that area and focus is
// Thanks to WebAIM.org for this idea
if ( document.location.hash && document.location.hash !== '#' ) {
let anchorUponArrival = document.location.hash;
setTimeout( function () {
$( anchorUponArrival ).scrollTo( { duration: 1500 } );
$( anchorUponArrival ).focus();
}, 100 );
}
} );
$( '.js-header-nav-toggle' ).click( event => {
event.preventDefault();
$( '.header__nav' ).toggleClass( 'header__nav--active' );
} );
} );
// Props to Dave Rupert: https://daverupert.com/2017/11/happier-html5-forms/
const inputs = document.querySelectorAll( 'input, textarea' );
inputs.forEach( input => {
input.addEventListener(
'invalid',
event => {
input.classList.add( 'error' );
},
false
);
input.addEventListener( 'focus', function () {
input.classList.remove( 'error' );
} );
input.addEventListener( 'blur', function () {
input.checkValidity();
} );
} );
},
finalize() {
// JavaScript to be fired on all pages, after page specific JS is fired
},
};