diff --git a/src/pretix/static/pretixpresale/js/widget/widget.js b/src/pretix/static/pretixpresale/js/widget/widget.js
index e35f28b29..e1edb677c 100644
--- a/src/pretix/static/pretixpresale/js/widget/widget.js
+++ b/src/pretix/static/pretixpresale/js/widget/widget.js
@@ -208,7 +208,7 @@ Vue.component('availbox', {
template: ('
'),
@@ -262,6 +262,15 @@ Vue.component('availbox', {
this.$root.$emit('amounts_changed')
},
computed: {
+ aria_labelledby: function () {
+ return this.$root.html_id + '-item-label-' + this.item.id;
+ },
+ dec_label: function () {
+ return '- ' + (this.item.has_variations ? this.variation.value : this.item.name) + ': ' + strings.quantity_dec;
+ },
+ inc_label: function () {
+ return '+ ' + (this.item.has_variations ? this.variation.value : this.item.name) + ': ' + strings.quantity_inc;
+ },
count_group_classes: function () {
return {
'pretix-widget-item-count-group': !this.$root.use_native_spinners
@@ -350,12 +359,12 @@ Vue.component('pricebox', {
+ ' '
+ ''
+ ''
- + '{{ $root.currency }} '
+ + '{{ $root.currency }} '
+ ''
+ + ' step="any" v-bind:aria-labelledby="aria_labelledby" v-bind:aria-describedby="price_desc_id">'
+ '
'
- + ''
+ + ''
+ '{{ taxline }}'
+ ''
+ ''),
@@ -366,6 +375,7 @@ Vue.component('pricebox', {
suggested_price: Object,
original_price: String,
mandatory_priced_addons: Boolean,
+ item_id: Number,
},
methods: {
stripHTML: function (s) {
@@ -375,6 +385,18 @@ Vue.component('pricebox', {
},
},
computed: {
+ aria_labelledby: function () {
+ return [
+ this.$root.html_id + '-item-label-' + this.item_id,
+ this.price_box_id
+ ].join(" ");
+ },
+ price_box_id: function () {
+ return this.$root.html_id + '-item-pricebox-' + this.item_id;
+ },
+ price_desc_id: function () {
+ return this.$root.html_id + '-item-pricedesc-' + this.item_id;
+ },
display_price: function () {
if (this.$root.display_net_prices) {
return floatformat(parseFloat(this.price.net), 2);
@@ -419,9 +441,6 @@ Vue.component('pricebox', {
return '' + this.$root.currency + " " + this.display_price;
}
},
- free_price_label () {
- return [strings.price, this.$root.currency].join(", ")
- },
taxline: function () {
if (this.$root.display_net_prices) {
if (this.price.includes_mixed_tax_rate) {
@@ -465,7 +484,7 @@ Vue.component('variation', {
+ ''
@@ -515,7 +534,7 @@ Vue.component('item', {
+ '
'
+ '