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() { }, };