[A11y] add alertidalog to confirm successful cart renewal

This commit is contained in:
Richard Schreiber
2025-06-02 21:49:11 +02:00
parent 3f9b52ad0c
commit cd729a7717
3 changed files with 34 additions and 5 deletions

View File

@@ -1,4 +1,5 @@
{% load i18n %} {% load i18n %}
{% load icon %}
{% load eventurl %} {% load eventurl %}
{% load daterange %} {% load daterange %}
{% load safelink %} {% load safelink %}
@@ -510,6 +511,14 @@
</button> </button>
</p> </p>
</form> </form>
<dialog role="alertdialog" id="cart-extend-feedback-dialog" aria-labelledby="cart-extend-feedback">
<form method="dialog">
<span id="cart-extend-feedback" class="text-muted"></span>
<button class="btn btn-default" autofocus value="OK">
{% icon "check" %} {% trans "OK" %}
</button>
</form>
</dialog>
{% else %} {% else %}
<p class="sr-only" id="cart-description">{% trans "Overview of your ordered products." %}</p> <p class="sr-only" id="cart-description">{% trans "Overview of your ordered products." %}</p>
{% endif %} {% endif %}

View File

@@ -59,7 +59,6 @@ var cart = {
$("#cart-deadline").text(gettext("Your cart is about to expire.")) $("#cart-deadline").text(gettext("Your cart is about to expire."))
} else { } else {
$("#cart-deadline").text( $("#cart-deadline").text(
cart._renewed_message + " " +
ngettext( ngettext(
"The items in your cart are reserved for you for one minute.", "The items in your cart are reserved for you for one minute.",
"The items in your cart are reserved for you for {num} minutes.", "The items in your cart are reserved for you for {num} minutes.",
@@ -67,6 +66,12 @@ var cart = {
).replace(/\{num\}/g, diff_minutes) ).replace(/\{num\}/g, diff_minutes)
); );
} }
$("#cart-extend-feedback").text(cart._renewed_message);
var dialog = $("#cart-extend-feedback-dialog").get(0);
if (cart._renewed_message) {
dialog.show();
}
cart._prev_diff_minutes = diff_minutes; cart._prev_diff_minutes = diff_minutes;
} }
@@ -101,6 +106,19 @@ var cart = {
$("#cart-deadline").attr("data-expires"), $("#cart-deadline").attr("data-expires"),
$("#cart-deadline").attr("data-max-expiry-extend") $("#cart-deadline").attr("data-max-expiry-extend")
); );
$("#cart-extend-feedback-dialog").on("close", function () {
var cart_panel_heading = $(this).closest(".panel").find(".panel-heading").get(0);
if (cart_panel_heading) {
window.setTimeout(function () {
cart_panel_heading.focus();
}, 50);
}
}
}).find("button").on("blur", function() {
var dialog = this.closest("dialog");
if (dialog.open) {
}
});
}, },
set_deadline: function (expiry, max_extend, renewed_message) { set_deadline: function (expiry, max_extend, renewed_message) {
@@ -127,10 +145,6 @@ $(function () {
$("#cart-extend-form").on("pretix:async-task-success", function(e, data) { $("#cart-extend-form").on("pretix:async-task-success", function(e, data) {
if (data.success) { if (data.success) {
cart.set_deadline(data.expiry, data.max_expiry_extend, data.message); cart.set_deadline(data.expiry, data.max_expiry_extend, data.message);
var cart_panel_heading = $(this).closest(".panel").find(".panel-heading").get(0);
if (cart_panel_heading) {
cart_panel_heading.focus();
}
} else { } else {
alert(data.message); alert(data.message);
} }

View File

@@ -254,6 +254,12 @@
#cart-deadline-short { #cart-deadline-short {
font-variant-numeric: tabular-nums; font-variant-numeric: tabular-nums;
} }
#cart-extend-feedback-dialog {
position: static;
padding: 0;
margin: 0;
border: none;
}
.btn-invisible { .btn-invisible {
opacity: 0 !important; opacity: 0 !important;
} }