|
|
|
const jQueryBridget = require('jquery-bridget');
|
|
|
|
const Isotope = require('isotope-layout');
|
|
|
|
|
|
|
|
export default {
|
|
|
|
init() {
|
|
|
|
// JavaScript to be fired on the catalog page
|
|
|
|
jQueryBridget('isotope', Isotope, $);
|
|
|
|
let $grid = $('.books');
|
|
|
|
$grid.isotope({
|
|
|
|
itemSelector: '.book',
|
|
|
|
getSortData: {
|
|
|
|
title: '.title a',
|
|
|
|
subject: '[data-subject]',
|
|
|
|
latest: '[data-date-published]',
|
|
|
|
},
|
|
|
|
sortAscending: {
|
|
|
|
title: true,
|
|
|
|
subject: true,
|
|
|
|
latest: false,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
$('.filters > a').click((e) => {
|
|
|
|
e.preventDefault();
|
|
|
|
$('.filters').toggleClass('is-active');
|
|
|
|
$('.filter-groups > div').removeClass('is-active');
|
|
|
|
})
|
|
|
|
$('.filter-groups .subjects > a').click((e) => {
|
|
|
|
e.preventDefault();
|
|
|
|
let id = $(e.currentTarget).attr('href');
|
|
|
|
$(`.filter-groups .subjects:not(${id})`).removeClass('is-active');
|
|
|
|
$(`.filter-groups ${id}`).toggleClass('is-active');
|
|
|
|
})
|
|
|
|
$('.licenses > a').click((e) => {
|
|
|
|
e.preventDefault();
|
|
|
|
let id = $(e.currentTarget).attr('href');
|
|
|
|
$(id).toggleClass('is-active');
|
|
|
|
})
|
|
|
|
$('.subjects .filter-list a').click((e) => {
|
|
|
|
e.preventDefault();
|
|
|
|
if ($(e.currentTarget).hasClass('is-active')) {
|
|
|
|
$('.subjects .filter-list a').removeClass('is-active');
|
|
|
|
$('.subjects').removeClass('has-active-child');
|
|
|
|
} else {
|
|
|
|
$('.subjects .filter-list a').removeClass('is-active');
|
|
|
|
$(e.currentTarget).addClass('is-active');
|
|
|
|
$('.subjects').removeClass('has-active-child');
|
|
|
|
$(e.currentTarget).parent().parent().parent('.subjects').addClass('has-active-child');
|
|
|
|
}
|
|
|
|
let subjectValue = $('.subjects .filter-list a.is-active').attr('data-filter');
|
|
|
|
let licenseValue = $('.licenses .filter-list a.is-active').attr('data-filter');
|
|
|
|
if(typeof licenseValue === "undefined") {
|
|
|
|
licenseValue = '';
|
|
|
|
} else {
|
|
|
|
licenseValue = `[data-license="${licenseValue}"]`;
|
|
|
|
}
|
|
|
|
if(typeof subjectValue === "undefined") {
|
|
|
|
subjectValue = '';
|
|
|
|
} else {
|
|
|
|
subjectValue = `[data-subject="${subjectValue}"]`;
|
|
|
|
}
|
|
|
|
$grid.isotope({ filter: `${subjectValue}${licenseValue}` });
|
|
|
|
});
|
|
|
|
$('.licenses .filter-list a').click((e) => {
|
|
|
|
e.preventDefault();
|
|
|
|
if ($(e.currentTarget).hasClass('is-active')) {
|
|
|
|
$('.licenses .filter-list a').removeClass('is-active');
|
|
|
|
$('.licenses').removeClass('has-active-child');
|
|
|
|
} else {
|
|
|
|
$('.licenses .filter-list a').removeClass('is-active');
|
|
|
|
$(e.currentTarget).addClass('is-active');
|
|
|
|
$('.licenses').addClass('has-active-child');
|
|
|
|
}
|
|
|
|
let subjectValue = $('.subjects .filter-list a.is-active').attr('data-filter');
|
|
|
|
let licenseValue = $('.licenses .filter-list a.is-active').attr('data-filter');
|
|
|
|
if(typeof licenseValue === "undefined") {
|
|
|
|
licenseValue = '';
|
|
|
|
} else {
|
|
|
|
licenseValue = `[data-license="${licenseValue}"]`;
|
|
|
|
}
|
|
|
|
if(typeof subjectValue === "undefined") {
|
|
|
|
subjectValue = '';
|
|
|
|
} else {
|
|
|
|
subjectValue = `[data-subject="${subjectValue}"]`;
|
|
|
|
}
|
|
|
|
$grid.isotope({ filter: `${subjectValue}${licenseValue}` });
|
|
|
|
});
|
|
|
|
$('.sort > a').click((e) => {
|
|
|
|
e.preventDefault();
|
|
|
|
$('.sort').toggleClass('is-active');
|
|
|
|
})
|
|
|
|
$('.sorts a').click((e) => {
|
|
|
|
e.preventDefault();
|
|
|
|
let sortBy = $(e.currentTarget).attr('data-sort');
|
|
|
|
$('.sorts a').removeClass('is-active');
|
|
|
|
$(e.currentTarget).addClass('is-active');
|
|
|
|
$grid.isotope({sortBy: sortBy});
|
|
|
|
});
|
|
|
|
},
|
|
|
|
finalize() {
|
|
|
|
},
|
|
|
|
};
|