From e6be56acbd29e4097704e2a93de134e17e2265eb Mon Sep 17 00:00:00 2001 From: Richard Schreiber Date: Tue, 3 Jun 2025 11:36:50 +0200 Subject: [PATCH] open closed cart (either details or sneak-peek) onsubmit --- src/pretix/static/pretixbase/js/details.js | 19 +++++++++++++++++-- src/pretix/static/pretixpresale/js/ui/cart.js | 1 + 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/pretix/static/pretixbase/js/details.js b/src/pretix/static/pretixbase/js/details.js index fdcd8eebd0..f3d65a4e47 100644 --- a/src/pretix/static/pretixbase/js/details.js +++ b/src/pretix/static/pretixbase/js/details.js @@ -11,11 +11,18 @@ setup_collapsible_details = function (el) { content.classList.remove('sneak-peek-content'); return; } + function openSneekPeakOnSubmit() { + $(button).trigger("click"); + } + var $buttons = $("button:enabled", content).prop("disabled", true); + var $forms = $("form", content).on("submit", openSneekPeakOnSubmit); content.setAttribute('aria-hidden', 'true'); button.setAttribute('aria-expanded', 'false'); button.addEventListener('click', function (e) { button.setAttribute('aria-expanded', 'true'); content.setAttribute('aria-hidden', 'false'); + $buttons.prop("disabled", false); + $forms.off("submit", openSneekPeakOnSubmit); content.addEventListener('transitionend', function() { content.classList.remove('sneak-peek-content'); @@ -29,8 +36,14 @@ setup_collapsible_details = function (el) { // this will be called by screenreader users if they kept focus on the button after expanding // we need to keep the trigger/button in the DOM to not irritate screenreaders toggling visibility var expanded = button.getAttribute('aria-expanded') == 'true'; - button.setAttribute('aria-expanded', !expanded); - content.setAttribute('aria-hidden', expanded); + button.setAttribute('aria-expanded', !expanded ? 'true' : 'false'); + content.setAttribute('aria-hidden', expanded ? 'true' : 'false'); + $buttons.prop("disabled", expanded); + if (expanded) { + $forms.on("submit", openSneekPeakOnSubmit); + } else { + $forms.off("submit", openSneekPeakOnSubmit); + } }); button.addEventListener('blur', function (e) { // if content is visible and the user leaves the button, we can safely remove the trigger/button @@ -48,6 +61,8 @@ setup_collapsible_details = function (el) { trigger.remove(); content.removeAttribute('aria-hidden'); content.classList.remove('sneak-peek-content'); + $buttons.prop("disabled", false); + $forms.off("submit", openSneekPeakOnSubmit); } } container.addEventListener("toggle", removeSneekPeakWhenClosed); diff --git a/src/pretix/static/pretixpresale/js/ui/cart.js b/src/pretix/static/pretixpresale/js/ui/cart.js index 7fd0e26d54..ccc23592b4 100644 --- a/src/pretix/static/pretixpresale/js/ui/cart.js +++ b/src/pretix/static/pretixpresale/js/ui/cart.js @@ -137,6 +137,7 @@ $(function () { }); $("#dialog-cart-extend form").submit(function() { + $("#cart-extend-form").closest("details:not([open])").find("summary").trigger("click"); $("#cart-extend-form").submit(); });