X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/d2a9ebf1eae1ee5fa8a09a7dfea76995274f7716..515610278a618c78e49ddd5410cb6a8952841685:/src/wolnelektury/static/js/main.js?ds=inline diff --git a/src/wolnelektury/static/js/main.js b/src/wolnelektury/static/js/main.js index 9821c7705..b646bf450 100644 --- a/src/wolnelektury/static/js/main.js +++ b/src/wolnelektury/static/js/main.js @@ -1,67 +1,37 @@ // JS Menu (function () { - let button = $('.js-menu'); - let menu = $('.l-navigation'); - let menuLinks = menu.find('a'); - - button.on('click', function() { - if(!$(this).hasClass('is-active')) { - $(this).addClass('is-active'); - menu.addClass('is-open'); - $('body').addClass('is-open'); - button.find('.bar').addClass('animate'); - menuLinks.attr('tabindex', 0); - } else { - $(this).removeClass('is-active'); - menu.removeClass('is-open'); - $('body').removeClass('is-open'); - button.find('.bar').removeClass('animate'); - menuLinks.attr('tabindex', -1); - } - }); - - $(document).keyup(function(e) { - if (e.keyCode === 27) { - button.removeClass('is-active'); - menu.removeClass('is-open'); - $('body').removeClass('is-open'); - button.find('.bar').removeClass('animate'); - menuLinks.attr('tabindex', -1); + const dialog = document.getElementById('main-menu'); + let buttonOn = $('.js-menu'); + let buttonOff = $('.js-menu-close'); + + async function closeMenu() { + // Może być od razu dialog.close bez is-closing, gdy przeglądarki nadrobią + // https://caniuse.com/wf-display-animation, https://caniuse.com/wf-overlay + if (!dialog.open || dialog.classList.contains('is-closing')) return; + dialog.classList.add('is-closing'); + buttonOn.find('.bar').removeClass('animate'); + buttonOff.find('.bar').removeClass('animate'); + await Promise.allSettled(dialog.getAnimations().map(a => a.finished)); + dialog.close(); } - }); -})(); - -// User menu. -(function() { - let button = $('.l-navigation__actions .user'); - let menu = $('#user-menu'); - let menuLinks = menu.find('a'); - - button.on('click', function() { - if (!menu.hasClass('is-open')) { - menu.addClass('is-open'); - menuLinks.attr('tabindex', 0); - } else { - menu.removeClass('is-open'); - menuLinks.attr('tabindex', -1) - } - return false; + dialog.addEventListener('close', () => { + dialog.classList.remove('is-closing'); }); - $(document).keyup(function(e) { - if (e.keyCode === 27) { - menu.removeClass('is-open'); - menuLinks.attr('tabindex', -1); - } + document.querySelector('.js-menu').addEventListener('click', () => { + dialog.showModal(); + buttonOn.find('.bar').addClass('animate'); + buttonOff.find('.bar').addClass('animate'); }); - $(document).click(function() { - menu.removeClass('is-open'); - menuLinks.attr('tabindex', -1); + dialog.querySelector('.js-menu-close').addEventListener('click', closeMenu); + dialog.addEventListener('cancel', e => { + e.preventDefault(); + closeMenu(); }); - })(); + // Ebook/Audiobook Btns (function() { let button = $('.c-media__btn button:not(.l-button--media--full)'); @@ -422,7 +392,7 @@ data: {'csrfmiddlewaretoken': $('[name=csrfmiddlewaretoken]').val()}, dataType: 'json', success: function() { - state.liked[$btn.attr('data-book')] = []; + state.liked[$btn.attr('data-book')] = [{'favorites': true}]; updateLiked($btn); }, error: function() { @@ -502,21 +472,27 @@ function updateLiked(e) { let bookId = $(e).attr('data-book'); - let liked = bookId in state.liked; - $(e).toggleClass('icon-liked', liked); + let liked = false; + let $bookContainer = $('.book-container-' + bookId); - $bookContainer.toggleClass('book-liked', liked); let $sets = $(".sets", $bookContainer); $sets.empty(); $.each(state.liked[bookId], (i,e) => { - let $set = $(""); - $set.attr("data-set", e.slug); - let $setA = $("").appendTo($set); - $setA.attr("href", e.url); - $setA.text(e.name); - let $setX = $("").appendTo($set); - $sets.append($set); + if (e.favorites) { + liked = true; + } else { + let $set = $(""); + $set.attr("data-set", e.slug); + let $setA = $("").appendTo($set); + $setA.attr("href", e.url); + $setA.text(e.name); + let $setX = $("").appendTo($set); + $sets.append($set); + } }); + + $(e).toggleClass('icon-liked', liked); + $bookContainer.toggleClass('book-liked', liked); } })(); @@ -560,24 +536,18 @@ window.location.reload(true); }); - $('.c-lang').on('click', function() { - !$(this).toggleClass('is-open'); - }); - - - - $(".c-media__settings > i").on('click', function() { $(".c-media__settings").toggleClass('active'); }); - const crisis = document.querySelector(".annoy-banner_crisis-container"); - const crisisLink = document.querySelector('.annoy-banner_crisis-container a.action'); - if (crisis) { - crisis.addEventListener("click", function() { - crisisLink.click(); - }); - } + $(".annoy-banner-clickable").each(function() { + let btn = $("a.action", this)[0]; + $(this).click((e) => { + if (e.target !== btn) { + btn.click(); + } + }); + }); })();