// 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();
}
- });
-})();
+ dialog.addEventListener('close', () => {
+ dialog.classList.remove('is-closing');
+ });
-// 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;
+ document.querySelector('.js-menu').addEventListener('click', () => {
+ dialog.showModal();
+ buttonOn.find('.bar').addClass('animate');
+ buttonOff.find('.bar').addClass('animate');
});
- $(document).keyup(function(e) {
- if (e.keyCode === 27) {
- menu.removeClass('is-open');
- menuLinks.attr('tabindex', -1);
- }
+ dialog.querySelector('.js-menu-close').addEventListener('click', closeMenu);
+ dialog.addEventListener('cancel', e => {
+ e.preventDefault();
+ closeMenu();
});
+})();
+
- $(document).click(function() {
- menu.removeClass('is-open');
- menuLinks.attr('tabindex', -1);
+// Ebook/Audiobook Btns
+(function() {
+ let dialogs = $(".l-button--dialog");
+ dialogs.on('click', function () {
+ let target = $(this).attr('id');
+ $('[data-popup=' + target)[0].showModal();
});
+ $('.c-media__popup__close').on('click', function() {
+ $(this).closest('dialog')[0].close();
+ });
})();
-// Ebook/Audiobook Btns
+
+// Player
(function() {
- let button = $('.c-media__btn button:not(.l-button--media--full)');
- let popupLayer = $('.c-media__popup');
- let closeButton = $('.c-media__popup__close');
let playButton = $('.c-player__btn--md');
let chaptersButton = $('.c-player__chapters span');
let select = $('.c-select');
let selectItem = $('.c-select li');
let volumeButton = $('.icon-volume');
- button.on('click', function () {
- let target = $(this).attr('id');
- $('[data-popup=' + target).addClass('is-open');
- $('body').addClass('popup-open');
- });
-
- closeButton.on('click', function() {
- $(this).closest('.c-media__popup').removeClass('is-open');
- $('body').removeClass('popup-open');
- });
-
- popupLayer.on('click', function(e) {
- let _this = $(this);
- if($(e.target).is(popupLayer)) {
- _this.removeClass('is-open');
- $('body').removeClass('popup-open');
- }
- });
-
chaptersButton.on('click', function() {
$(this).parent().toggleClass('is-active');
});
selectItem.removeClass('is-active');
$(this).addClass('is-active');
});
-
- $(document).keyup(function(e) {
- if (e.keyCode === 27) {
- $('.c-media__popup').removeClass('is-open');
- }
- });
})();
// Homepage books sliders
$('input', container).val($(this).val());
$('.is-active', container).removeClass('is-active');
$(this).closest('.l-checkout__payments__box').addClass('is-active');
- $('#kwota').val('');
- return false;
+ $('#id_custom_amount').val('');
+ });
+
+ $('#id_custom_amount').on('input', function() {
+ if ($(this).val() > 0) {
+ $('.l-checkout__payments__box.is-active').removeClass('is-active');
+ } else {
+ $('.l-checkout__payments__box.initial-active').addClass('is-active');
+ }
+ });
+
+ $('.donation-mod-monthly').on('click', function() {
+ $.ajax({
+ method: 'POST',
+ data: {
+ csrfmiddlewaretoken: $("[name=csrfmiddlewaretoken]").val(),
+ monthly: $(this).data('monthly'),
+ },
+ url: $(this).data('url'),
+ success: function(data) {
+ if ($(".q-reload-is-monthly").length) {
+ window.location.reload()
+ } else {
+ $(".q-is-monthly").toggleClass('is-monthly', data.monthly);
+ }
+ }
+ });
+ return false;
});
})();
$.post({
url: '/ludzie/lektura/' + $(this).attr('data-book-slug') + '/nie_lubie/',
data: {'csrfmiddlewaretoken': $('[name=csrfmiddlewaretoken]').val()},
+ dataType: 'json',
success: function() {
delete state.liked[$btn.attr('data-book')];
updateLiked($btn);
+ },
+ error: function() {
+ window.location.href = $('.login-link').attr('href');
}
})
} else {
$.post({
url: '/ludzie/lektura/' + $(this).attr('data-book-slug') + '/lubie/',
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(e) {
- if (e.status == 403) {
- $('#login-link').click();
- }
- },
+ error: function() {
+ window.location.href = $('.login-link').attr('href')
+ }
});
}
})
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 = $("<span>");
- $set.attr("data-set", e.slug);
- let $setA = $("<a>").appendTo($set);
- $setA.attr("href", e.url);
- $setA.text(e.name);
- let $setX = $("<a class='close'></a>").appendTo($set);
- $sets.append($set);
+ if (e.favorites) {
+ liked = true;
+ } else {
+ let $set = $("<span>");
+ $set.attr("data-set", e.slug);
+ let $setA = $("<a>").appendTo($set);
+ $setA.attr("href", e.url);
+ $setA.text(e.name);
+ let $setX = $("<a class='close'></a>").appendTo($set);
+ $sets.append($set);
+ }
});
+
+ $(e).toggleClass('icon-liked', liked);
+ $bookContainer.toggleClass('book-liked', liked);
}
})();
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();
+ }
+ });
+ });
})();